[問題] 畢舞抽獎的亂數產生器

看板NTU作者 (sidangerous)時間11年前 (2014/06/09 01:54), 編輯推噓54(54028)
留言82則, 52人參與, 最新討論串1/2 (看更多)
先說我覺得今年畢舞辦的超好的 有吃 有跳舞 有拍照 有表演 有宇宙人跟Crispy 動線規畫流程什麼的都超棒! 但不知道有沒有人跟我一樣覺得他抽獎的亂數產生器怪怪的呢? 當然我完全沒有證據啦 猜錯了話請糾正我這樣 畢竟也有非零的機率可能出現這樣的情形XDD 出現的數字常常是141X 12XX 20XX之類的 依照小弟寫程式常常寫出bug的經驗 不知道他寫法是不是這樣 假設總人數: 2489(隨便猜的) 產生規則如下: 位數: 千 百 十 個 亂數: (0~2) (0~4) (0~8) (0~9) 也就是他是digit by digit的亂數產生? 這樣做了話雖然可以保證不會超出參與人數 但是像 18XX 這樣的號碼就永遠不會被產生出來? 無論如何 還是要謝謝這次畢舞主辦的辛勞!!! 今年真的辦的不錯!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.18.204 ※ 文章網址: http://www.ptt.cc/bbs/NTU/M.1402250083.A.D29.html

06/09 02:03, , 1F
有這麼無言的寫法嗎......?
06/09 02:03, 1F

06/09 02:07, , 2F
不是應該是產生0000~9999之間的亂數 if >=2489 就重取一個?
06/09 02:07, 2F

06/09 02:08, , 3F
或是直接 RAND_MAX 之類的?
06/09 02:08, 3F

06/09 02:11, , 4F
有18xx吧我忘了 不過 14xx真的多到誇張
06/09 02:11, 4F

06/09 02:11, , 5F
如果全部有2489人,就寫:
06/09 02:11, 5F

06/09 02:11, , 6F
srand(time(NULL));
06/09 02:11, 6F

06/09 02:12, , 7F
x =(rand() % 2489) +1;
06/09 02:12, 7F

06/09 02:12, , 8F
printf("The Random Number is %d .\n", x);
06/09 02:12, 8F

06/09 02:12, , 9F
就好啦... 為什麼要去做什麼千百十個的設定,反而比較麻煩
06/09 02:12, 9F

06/09 02:13, , 10F
rand+mod就好啦
06/09 02:13, 10F

06/09 02:14, , 11F
如果我沒記錯 百位數應該是沒有出現過 5 6 7 8 9
06/09 02:14, 11F

06/09 02:16, , 12F
有同感,幫高調
06/09 02:16, 12F

06/09 02:16, , 13F
確實沒有出現過XD 但就算真的是這樣,這個時候說好像也沒
06/09 02:16, 13F

06/09 02:17, , 14F
辦法有什麼補償吧XD (頂多團隊出來道歉~)
06/09 02:17, 14F

06/09 02:19, , 15F
歡迎加入資工系
06/09 02:19, 15F

06/09 02:27, , 16F
14xx真的超多
06/09 02:27, 16F

06/09 02:38, , 17F
印象中百位數真的沒出現過五以上
06/09 02:38, 17F

06/09 02:38, , 18F
有無舞伴產生器QQ
06/09 02:38, 18F

06/09 02:39, , 19F
直接mod不好,人數多的話機率會有差異
06/09 02:39, 19F

06/09 02:45, , 20F
真的!!!感覺亂數產生器怪怪的+1...
06/09 02:45, 20F

06/09 02:46, , 21F
程式那樣寫也是蠻奇葩的= =
06/09 02:46, 21F

06/09 02:51, , 22F
程式那個 寫成重抽比較公平 餘數好像有邊界
06/09 02:51, 22F

06/09 03:16, , 23F
其實0314出現過兩次不過主持人沒發現 只發現1413重複
06/09 03:16, 23F

06/09 03:47, , 24F
不至於吧會寫成這樣也太冏XDDDD
06/09 03:47, 24F

06/09 03:48, , 25F
很明顯的非常不亂的亂數產生器
06/09 03:48, 25F

06/09 03:50, , 26F
bit-wise也太酷
06/09 03:50, 26F

06/09 03:59, , 27F
1410 1411 1412 1413 1435 0413 0314
06/09 03:59, 27F

06/09 08:19, , 28F
亂碼產生器真的有問體!
06/09 08:19, 28F

06/09 08:27, , 29F
開源社又要出現了嗎(誤)
06/09 08:27, 29F

06/09 08:53, , 30F
只有我覺得畢舞沒資格叫畢舞嗎...
06/09 08:53, 30F

06/09 09:20, , 31F
rand() * 2489 + 1 一行就好了好嗎? = =
06/09 09:20, 31F

06/09 09:24, , 32F
%
06/09 09:24, 32F

06/09 09:39, , 33F
%
06/09 09:39, 33F

06/09 09:56, , 34F
一位數一位數去產生亂數 應該不會有人這麼有才這樣寫吧
06/09 09:56, 34F

06/09 10:35, , 35F
1410到1415都中了喔
06/09 10:35, 35F

06/09 10:43, , 36F
其實想想也沒什麼不公平的,走進來的時候大家
06/09 10:43, 36F

06/09 10:44, , 37F
都是隨機取票,應該算是抽過一遍了
06/09 10:44, 37F

06/09 10:47, , 38F
樓上的想法...?
06/09 10:47, 38F

06/09 10:52, , 39F
樓上是說拿到15XX的活該沒機會抽獎嗎XDD 還真公平XD
06/09 10:52, 39F

06/09 10:55, , 40F
說不定寫程式的真的這麼聰明......Orz
06/09 10:55, 40F

06/09 11:04, , 41F
沒內定的話是沒什麼不公平的沒錯 就是無趣了點而已
06/09 11:04, 41F

06/09 11:06, , 42F
我跟同學有統計一下,如果沒記錯的話,500-1000及1500-
06/09 11:06, 42F

06/09 11:06, , 43F
2000是沒出現過的
06/09 11:06, 43F

06/09 11:23, , 44F
為什麼不先取好數字再做動畫 囧a
06/09 11:23, 44F

06/09 11:31, , 45F
這樣寫還更麻煩吧 XD
06/09 11:31, 45F

06/09 11:32, , 46F
百位跟十位數都沒出現6789
06/09 11:32, 46F

06/09 11:59, , 47F
來來來來試試看 http://i.imgur.com/sOnlQus.png
06/09 11:59, 47F

06/09 12:03, , 48F
覺得抽獎程式怪怪的+1,百位數沒超過5過@@
06/09 12:03, 48F

06/09 12:04, , 49F
06/09 12:04, 49F

06/09 12:07, , 50F
第一種是原po提到的 第二種是標準的
06/09 12:07, 50F

06/09 12:20, , 51F
z大你也有機會拿到1413阿
06/09 12:20, 51F

06/09 12:21, , 52F
就你進場的時候運氣不好
06/09 12:21, 52F

06/09 12:22, , 53F
樓上上的ljust要改成rjust
06/09 12:22, 53F

06/09 12:23, , 54F
7 8 9這三個數字幾乎沒出現阿~~
06/09 12:23, 54F

06/09 13:24, , 55F
其實y大是對的 不過很明顯大家不會接受XD
06/09 13:24, 55F

06/09 13:25, , 56F
老師說過要更亂更隨機可以多取幾次mod
06/09 13:25, 56F

06/09 13:25, , 57F
[rand%2489*rand%2489]%2489
06/09 13:25, 57F

06/09 14:43, , 58F
樓上這樣的分布應該會不太均等 某些數字出現的機率會較高@@
06/09 14:43, 58F

06/09 14:45, , 59F
樓樓上的算法會讓數字越小機率越大
06/09 14:45, 59F

06/09 14:53, , 60F
竟然還會有這麼神奇的事...
06/09 14:53, 60F

06/09 15:42, , 61F
沒到場,不過如果進場時的號碼是隨意抽取的話的確是隨機
06/09 15:42, 61F

06/09 15:42, , 62F
當然前提是單位沒有把中獎號碼洩漏出去啦
06/09 15:42, 62F

06/09 16:48, , 63F
RSC大怎麼不想讀資工呢><!
06/09 16:48, 63F

06/09 17:21, , 64F
發的號碼牌應該是有順序的,至少我跟舞伴是連號的。
06/09 17:21, 64F

06/09 18:09, , 65F
@danielu0601 對不起晃神了XD
06/09 18:09, 65F

06/09 18:13, , 66F
@MIKE大這是件很長的故事(?
06/09 18:13, 66F

06/09 22:00, , 67F
怪不得會常出BUG...= =
06/09 22:00, 67F

06/09 22:45, , 68F
感覺入場號碼牌跟時間有關係,所以知道遊戲規則是這樣
06/09 22:45, 68F

06/09 22:45, , 69F
進場時間要拿捏好唷~揪咪 ^。<~
06/09 22:45, 69F

06/09 23:57, , 70F
我是畢舞總召杜瀛,很抱歉因程式設計不良,導致抽獎活動
06/09 23:57, 70F

06/09 23:57, , 71F
驚喜感不如預期,在此向所有參與同學致上歉意。
06/09 23:57, 71F

06/09 23:58, , 72F
另外也向大家說明:抽獎卷為入場隨機發放,現場產生獎號,
06/09 23:58, 72F

06/09 23:59, , 73F
不會事前洩漏。我們會深刻檢討此次疏失,傳承下屆改善。
06/09 23:59, 73F

06/09 23:59, , 74F
最後,再次為團隊思慮不周,向所有參加同學致上歉意。
06/09 23:59, 74F

06/10 00:12, , 75F
說真的 14XX 的 應該快要被抽完了吧 = =
06/10 00:12, 75F

06/10 01:05, , 76F
所以是真的寫錯了@@?
06/10 01:05, 76F

06/10 02:21, , 77F
.....
06/10 02:21, 77F

06/10 02:57, , 78F
還真的寫錯喔 扯翻= =+
06/10 02:57, 78F

06/10 09:55, , 79F
花了錢結果一開始就發現沒啥好期待的...
06/10 09:55, 79F

06/10 10:24, , 80F
總召阿總召道歉repo比較有誠意吧
06/10 10:24, 80F

06/10 21:55, , 81F
[rand() + rand() + rand()...] % 2489 多加幾次阿
06/10 21:55, 81F

06/10 21:57, , 82F
再把預設爛爛的 rand 換成 MT twister
06/10 21:57, 82F
文章代碼(AID): #1JbADZqf (NTU)
文章代碼(AID): #1JbADZqf (NTU)