[問題] random 的不隨機

作者: JokePtt (思辨成魔)   2016-11-08 19:04:44
如題
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
#!/usr/bin/env python3
import random
import time
__7n=[]
for __iter_100 in range(100):
__7n.append(random.randint(0,51))
print(__7n)
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
同時間取100個 0-51的樣本 出來的數字很相近或相同的相鄰在一起
感覺很不隨機 random 咬時間產生?
改成下本件
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
#!/usr/bin/env python3
import random
import time
__7n=[]
for __iter_100 in range(100):
__77n=[]
for __iter_7n in range(7):
# delay x秒
# time.sleep(0.01*(random.randint(0,9)))
__77n.append(random.randint(0,9))
__tick7n=0
for __iter_7mix in range(7):
__tick7n+=__77n[__iter_7mix]*10**(6-__iter_7mix)
__7n.append(__tick7n%52)
print(__7n)
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
7位數(長整數?)去整除 也是出來不隨機的法則
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
#!/usr/bin/env python3
import random
import time
__7n=[]
for __iter_100 in range(100):
__77n=[]
for __iter_7n in range(7):
# delay x秒
time.sleep(0.01*(random.randint(0,9)))
__77n.append(random.randint(0,9))
__tick7n=0
for __iter_7mix in range(7):
__tick7n+=__77n[__iter_7mix]*10**(6-__iter_7mix)
__7n.append(__tick7n%52)
print(__7n)
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
或者插入時間間隔想拆開random可能咬時間序的規律
也是很不隨機
加大時間間隔 0.01→0.05 0.08…
除了時間變長外 看不出有變隨機的可能 還是很不隨機
random難道不了短時間量產隨機樣本嗎?
一個樣本沒問題 一百兩百個樣本就有問題
請問各位大大 如何改比較好?
純研究紙牌機率卡住
作者: kerwinhui (kezza)   2016-11-08 19:12:00
random != evenly-spaced
作者: Fungshui   2016-11-08 19:42:00
random目前的核心是Mersenne Twister,周期很長,至少對於這小問題還是措措有餘的,你的感覺不太準確
作者: chchwy (mat)   2016-11-08 20:44:00
數字分佈很均勻 != 隨機
作者: JokePtt (思辨成魔)   2016-11-08 20:55:00
可是100個樣本 超過8.9個 甚至10多個都一樣 這樣算隨機?第二三個文件如果不整除52 出來的7個位數也頗怪總覺得差不多時間序出來的樣本都差不多 量產樣本有問題
作者: CaptainH (Cannon)   2016-11-08 21:07:00
lol 毛真多
作者: linfox (想要一個貓頭鷹木雕)   2016-11-08 22:38:00
要不要跑一下統計確認一下隨機隨不隨機?(好饒舌)人對隨機的知覺還蠻不準的 XD
作者: zeus85072 (deus)   2016-11-08 22:46:00
才100個哪裡準啊跑個100萬筆以上再來看夠不夠隨機
作者: flarehunter (Range)   2016-11-09 09:47:00
你要發牌的話要用shuffle吧?保證不重複 牌用完再重新shuffle
作者: AmamiyaLee (AmamiyaLee)   2016-11-11 21:23:00
https://youtu.be/DTHavqxr3sM 隨機給你參考

Links booklink

Contact Us: admin [ a t ] ucptt.com