作者JokePtt (思辨成魔)
看板Python
標題[問題] random 的不隨機
時間Tue Nov 8 19:04:44 2016
如題
※※※※ ※※※※ ※※※※ ※※※※ ※※※※ ※※※※
#!/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難道不了短時間量產隨機樣本嗎?
一個樣本沒問題 一百兩百個樣本就有問題
請問各位大大 如何改比較好?
純研究紙牌機率卡住
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.139.108.184
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1478603088.A.6D8.html
→ kerwinhui: random != evenly-spaced 11/08 19:12
→ Fungshui: random目前的核心是Mersenne Twister,周期很長,至少對 11/08 19:42
→ Fungshui: 於這小問題還是措措有餘的,你的感覺不太準確 11/08 19:44
推 chchwy: 數字分佈很均勻 != 隨機 11/08 20:44
→ JokePtt: 可是100個樣本 超過8.9個 甚至10多個都一樣 這樣算隨機? 11/08 20:55
→ JokePtt: 第二三個文件如果不整除52 出來的7個位數也頗怪 11/08 20:57
→ JokePtt: 總覺得差不多時間序出來的樣本都差不多 量產樣本有問題 11/08 20:59
推 CaptainH: lol 毛真多 11/08 21:07
→ linfox: 要不要跑一下統計確認一下隨機隨不隨機?(好饒舌) 11/08 22:38
→ linfox: 人對隨機的知覺還蠻不準的 XD 11/08 22:39
→ zeus85072: 才100個哪裡準啊 11/08 22:46
→ zeus85072: 跑個100萬筆以上再來看夠不夠隨機 11/08 22:46
推 flarehunter: 你要發牌的話要用shuffle吧?保證不重複 牌用完再 11/09 09:47
→ flarehunter: 重新shuffle 11/09 09:47