[問題] random.choice 的 replace 問題

作者: henry8168 (番薯猴)   2018-03-20 11:23:22
我用 Python 3,
以前有個好用的參數在 random.choice() 內叫做 replace,
改成 False 就可以不重複隨機選取。
我有個 list_t 想給這個函式隨機選取其中之一,
但在最新的 python 3 的 random 裡面,
用 replace 這個參數就會報錯,請問有效能比較好的寫法來取代這功能嗎?
用 in 來判斷是否被選取過會花太多時間。
作者: vfgce (小兵)   2018-03-20 11:46:00
python的random.choice()是從seqenuce中隨機取一個,當然沒有replace的問題,你要取多個但不重覆,就用random.sample我想你記錯函數了,numpy的random.choice才有replace選項請問每次迴圈不重複和一次抓k個,再來迴圈,有差別嗎?repalce參數本來就是為了一次抓多個....numpy的random.choice也是一次抓多個...
作者: goldflower (金色小黃花)   2018-03-20 15:40:00
寫個random.shuffle(list(range(n)))用這當sample?如果你不想動你原本的array的話啦
作者: vfgce (小兵)   2018-03-20 16:10:00
用random.choice本來就沒動到原先的list.你要用shuffle再迴圈也可,但一來原先list改變過,二來後面要迴圈時,要指定range(k),用numpy的random.choice或pythonrandom.sample傳回新LIST,不改變舊LIST,迴圈時直接使用整個新LIST,不用指定RANGE你若使用numpy的random.choice還是得指定replace=False,預設是True.
作者: ckc1ark (偽物)   2018-03-20 20:07:00
https://stackoverflow.com/q/10054732 要省空間參考這篇

Links booklink

Contact Us: admin [ a t ] ucptt.com