python多個隨機數
① 如何用python編寫一個從隨機數表1~100中抽取三個樣本的隨機數程序
#導入隨機數模塊
import random
#定義一個空的數組,用作取樣表
reList = []
#為取樣表賦值,1~100
for i in range(1,101):
reList.append(i)
#使用sample方法,取3個隨機數
res = random.sample(reList,k=3)
print("三個隨機數是:{}".format(res))
② Python 隨機產生[0,100]以內的隨機數,找到最大值和最小值並交換位置
過程如圖所示:
獲取1~100以內的隨機數有兩種方法:
方法1:可以通過Math類中的random方法獲取隨機數,再乘以100加1,然後轉換為int類型即可。
方法2:可以通過Random類中的nextInt方法獲取隨機數。
(2)python多個隨機數擴展閱讀
函數使用補充說明
1、random是用於生成隨機數的,可以利用它隨機生成數字或者選擇字元串。
random.random(),用於生成一個隨機浮點數:range[0.0,1.0)。
random.uniform(a,b),用於生成一個指定范圍內的隨機浮點薯兄數,a,b為上下限,只要a!=b,就會生成介於兩者之間的一個浮點數,若a=b,則生成的浮點數就是a。
random.randint(a,b),用於生成一個指定范圍內的整數,a為下限,b為上限,生成的隨機整數a<=n<=b;若a=b,則n=a;若a>b,報錯。
random.randrange([start], stop [,step]),祥手老從指定范圍內,按指定基數遞增的集合中謹升獲取一個隨機數,基數預設值為1。
random.choice(sequence),從序列中獲取一個隨機元素,參數sequence表示一個有序類型,並不是一種特定類型,泛指list,tuple,字元串等。
random.shuffle(x[,random]),用於將一個列表中的元素打亂。
random.sample(sequence,k),從指定序列中隨機獲取k個元素作為一個片段返回,sample函數不會修改原有序列。
2、Python中有join()和os.path.join()兩個函數,具體作用如下:
join():連接字元串數組。將字元串、元組、列表中的元素以指定的字元(分隔符)連接生成一個新的字元串。
os.path.join():將多個路徑組合後返回。
③ python如何隨機選取n個不同的數字
python隨機選取n個不同的數字的方法:
1、使用「import random」導入random包
2、通過for語句循環執行n次「random.randint()」語句獲取n個隨機數並將隨機數輸入到列表中
n=10示例如下:
3、用set函數去重就可以了
完整代碼:
更多Python知識,請關註:Python自學網!!
④ 【Python 】性能優化系列:隨機數
最近在做的項目重點部分與大量生成隨機數有關,維度高達[1700000,10000],需要生成 10 x 30 次左右,這里遇到內存和速度的雙重瓶頸,特地研究了一下如何優化隨機數。
優化時間測試所需的分析工具在另一篇博客《性能優化系列一:分析工具》中提到。
原生的python中也有隨機模塊生成 random.randint 和 random.random 等,但是速度非常慢,numpy 速度可以大幅提升。一般都採用numpy生成隨機數。
比較常用的就是以上幾種。在需要生成大量隨機數的情況下,或生成偽隨機數的情況下,python 3.7 常用 RandomState 。
直接生成大規模非稀疏矩陣如下,經常遇到 MemoryError 的錯誤,大概是同時生成多個float64精度的大規模隨機矩陣伺服器內存不夠,而random state 似乎也沒提供調整類型的attr,
這時最好使用即使生成即使銷毀,僅保留種子作為索引,同樣,多個CPU之間共享大規模矩陣涉及到共享內存或數據傳輸同步較慢的問題,最好也共享seed而不是直接共享矩陣。
ps. 這里注意一般我們設置time.time()為種子時,對於並發性程序是無效的,不要在並發程序中同時定義,建議生成一個seed list 列表再從中取。
這里可以對大規模矩陣進行分片以進行後續的np 乘法,再切片賦值,以時間換內存。這種情況的麻煩在於如果設定隨機數種衡基子會導致每個分片的隨機數相同。可以利用一個最初seed(爺爺種子)randint生成 一組切片組數的seed(父親種子),再每次從中取不同的隨機數。
在上述切片方法嘗試之後,可以解決內存問題。但是時間非常慢,特別是採取s = 1時在standard normal 上調用170萬次的時間長達3000s,line search一下搜索了大約100000為切片值仍然太慢。在文檔中發現了 BitGenerator 和 Generator ,大約早棗可以提速到原來的 1/3。
除了Numpy和基本模塊之外,AES CTR 加密演算法生成隨機數也很快,但咐睜謹是並不能有比較方便的方式控制每次生成的一樣。參見以下reference。
tensorflow 和 pytorch 也都有大規模生成隨機tensor的方式。性能待考。
1. 超快生成隨機數的方式CSDN博客
2. tensorflow 生成隨機tensor
⑤ 用python批量生成32位隨機數
import random
seed = "!@#$%^&*()_+=-"
for i in range(4):
text = ''.join(random.sample(seed, 32))
with open('test.txt', mode='a', encoding='utf-8') as f:
f.write(text)
f.write('
')
4:生成4次
32:位數
批量生成4次32位的隨機數
⑥ python中如何生成多個,但總和是固定的隨機數
很簡單,不用那麼蠢的代碼。
如果你不需要最終產生的隨機數是整數的話,只需要隨機產生10個隨機數,然後計算它們的合是多少,然後算下這個合族鏈謹和60之間兆基的比例,把所有的隨機數乘以一個比例就可以了。給你兩個方法參考,都是可以的。見方法1,方法2的代碼。
如果你需要最終產生整數的話,那就隨機產生9個隨機數,在算比例的時候變一下分母分子,然後最後用原list除以比例的時候用整除就可以了。這樣9個數全是整數,然後算一下這九喚辯個數和60的差值,把差值補充進去做為第十個數就可以了。見方法1'和方法2』。
import numpy as np
#方法1:產生0-1的10個隨機浮點數,然後乘以比例達到最終合為60
x0=np.random.rand(10)
ratio=60/sum(x0)
x1=x0*ratio
#方法2:產生10個0-60之間的10個隨機整數,然後乘以比例達到最終合為60
y0=np.random.randint(60,size=10)
ratio=60/sum(y0)
y1=y0*ratio
#方法1':產生0-1的9個隨機浮點數,然後除以比例達到9個數為整數,最後補充一個60和這個
#list的和的差值,就可以了。
x0=np.random.rand(9)
ratio=sum(x0)/60
x1=x0//ratio
x1=x1.tolist()
x1.append(60-sum(x1))
#方法2':產生10個0-60之間的隨機整數,然後除以比例達到9個數為整數,最後補充一個60和這個
#list的和的差值,就可以了。
y0=np.random.randint(60,size=9)
ratio=sum(y0)/60
y1=y0//ratio
y1=y1.tolist()
y1.append(60-sum(y1))
⑦ python產生10個[100~200]之間的隨機數,找出這10個隨機數中的中間值
在8000到2000之間產生10個隨機數,用到random包。
random.random()用於生成一個指定范圍內的隨機符點數,兩個參數其中一個是上限,一個是下限。如果a > b,則生成隨機數。
n <= b。如果 a <b, 則 b <= n <= a。用於生成一個指定范圍內的整數。其中參數a是下限,參數b是上限,Python生成隨機數。
(7)python多個隨機數擴展閱讀:
注意事項:
1、range (10000000)後,內存不釋放的原因:python對整數對象做了緩存,新創建出來的整數對象的內存不會蔽脊被釋放,而是留著以後再次創建整數對象時繼續使用。這樣可以減少new操作,提高效率。
2、局部變數的訪問速度,比全局變數、內建變數都要快,如果函數中,需要頻繁使用某個全局變數或內建函數時,那麼可以考慮先中彎將這個全局變數或內建函數賦值給一個局部變數,後面代碼直接訪問這個局部變數、
3、雖然python是動態語言,但是在執行python代碼前,也有編譯的過程。平時看到的pyc文件就是python編譯後的結果。
⑧ 怎麼用python生成隨機數
在Python中,random模塊用於生成隨機數。下面介紹下random模塊中常用的幾個函數
- 01
打開我們python的ide
- 02
在打開的shell中,首先需要導入random庫,才可以使用random中的方法,首先介紹下應用最多的函數,random.random(),可以生成一個0到1的隨機符點數
- 03
random.uniform(a,b)函數,生成指定范圍內的隨機符點數,如下圖
- 04
random.randint(a,b)函數,生成一個指定范圍內的整數,如下圖
- 05
random.choice(sqe)函數,從sqe序列中得到一個隨機元素,如下圖,序列元素可以包含很多種類,集合,列表,甚至元組都可以作為參數進行傳遞
⑨ python如何一次性取出多個隨機數
Python內置的函數一次只能生成一個隨機數,然而你可以方便地使用表理解(list comprehension)一次性生成多個隨機數。示例的代碼如下:
importrandom
[random.randint(0,100)for_inrange(10)]
#[57,93,22,55,41,64,47,32,93,61]
range函數輸入不同的值,可以設置需要生成隨機數的個數,上面的例子中生成了10個隨機數。
⑩ python中怎麼隨機選取多個不同的數
python實現隨機一柱雙色球:
定義一個列表,列表red_ball=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]
打亂red_ball列表值的順序
提取打亂後的前6個值,賦值給新列表redB
從1-16隨機產生一個整數,賦值給blueB,做為籃球
輸出redB,blueB
importrandom
red_ball=[]#定州物漏義紅球列表
red_ball=list(range(1,34))#給紅球螞寬列表賦值
random.shuffle(red_ball)#打亂列表順序
redB=[]
blueB=[]
foriinrange(6):
redB.append(red_ball[i])#從列表red_ball中提取打亂順序後的前6個值,冊爛放到新列表redB中
else:
redB.sort()
blueB.append(random.randint(1,16))
print(redB,blueB)
# [9, 13, 17, 22, 23, 28] [8]