如何生成0到1之間的100個隨機數並凍結使其無法更改?我想用MATLAB。我用Excel生成,但它不斷變化,所以我厭倦了這些不斷的變化。我有10個變量,並且必須爲每個變量生成0到1之間的100個隨機數。我也需要將這些生成的數字導出到Excel中。對你的幫助表示感謝。生成0到1之間的100個隨機數並凍結它
回答
第1部分:生成可重複的隨機量
我認爲凍結你的意思是,在程序的不同運行隨機數發生器,產生「隨機」相同的數字序列。
這已經在MATLAB中使用命令rng
照顧。
此函數所需的唯一參數是種子的值。在您的情況下,您可以使用default
值,以便每次運行代碼時將算法參數設置爲默認值。因此,它會一遍又一遍地產生相同的數字序列。
rng('default')將rand,randi和randn使用的隨機數生成器的設置設置爲默認值。這樣,就像重新啓動MATLAB一樣生成相同的隨機數。默認設置是Mersenne扭曲與種子0
實施例:
>> rng('default');
>> A = rand(1,10)
A =
0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785 0.5469 0.9575 0.9649
>> B = rand(1,10)
B =
0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595
>> rng('default');
>> B = rand(1,10)
B =
0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785 0.5469 0.9575 0.9649
所以,在本例中,首先使用default
參數生成A
變量。另一方面,第二個參數B
是在不重置隨機發生器的參數的情況下生成的,因此它與A
不同。通過將參數重置爲默認值,您可以獲得第一個變量的相同結果。
rand
命令爲您提供的數字均勻分佈在[0,1]上,並且使用rbg('default')
您將會一次又一次地獲得相同的序列。
所以根據MATLAB,你生成可重複的隨機數。
第2部分:在Excel中
很容易寫,你只需要使用MATLAB功能xlswrite
。在這裏檢查文檔。並且有一個例子:
xlswrite('myExcel.xlsx',A);
軟件生成的隨機數不是真正的隨機數,而是僞隨機數。在不深入研究技術細節的情況下,從種子值生成僞隨機數序列,並且大多數語言/操作系統將初始種子設置爲從運行到運行變化的事物,通常與系統的內部時鐘有關,或者隨機數發生器的前一次運行。因此,如果兩次運行相同的程序,大多數系統的默認行爲會給您不同的結果。
出於調試目的,這通常是不可取的,所以大多數系統通常會給你一個明確設置種子的方法。在Matlab中,可以使用rng(種子)將種子設置回默認值,或者在需要時將其設置爲特定的數字,例如十個不同的隨機數字可重複運行,以說服您自己的算法是正確的。 (即,rng(1)然後運行你的軟件; rng(2)並用不同的隨機數運行軟件得到不同的結果; rng(1)準確重複第一次運行等)
Excel在兩方面有點不同。首先,每次進行更新時,Excel會假定您要更新整個電子表格中的所有內容,包括所有對隨機數生成器的調用,這會導致您看到的刷新。其次,據我所知,沒有辦法設置或重置種子。在Excel中通常的黑客攻擊是可怕的 - 生成隨機數字,然後將結果作爲特殊值(只複製數字,而不是公式)複製到需要它們的位置。
使用這些技術時要非常小心。它們對於調試是完全合法的,但是如果將它們合併到一個程序中並忘記刪除它們,那麼以後您將非常不高興。
- 1. 如何在FreePascal中生成50個隨機數列表(0到100之間)
- 2. 0-1之間的隨機數生成填充容器
- 3. 使用php生成1到10之間的30個隨機數
- 4. 生成0到10之間的隨機數字
- 5. 如何生成10個隨機數,範圍爲1到100?
- 6. Boost C++ - 生成一個介於0和1之間的隨機實數
- 7. 如何在1到1,000,000之間生成FreePascal中的隨機數
- 8. 生成100個10位隨機數並保存到數據庫
- 9. 我如何隨機生成75-100%之間的數字?
- 10. 隨機數生成與它爲1
- 11. 隨機選擇0和1之間
- 12. 生成0之間的隨機數10000在C#
- 13. 我應該如何生成0到2之間的隨機數? BCL隨機不是隨機的
- 14. 我如何在1到16之間的C++中生成一個隨機數?
- 15. 在python中生成1到6之間的6個隨機數列表
- 16. 使用增強生成1和9999之間的隨機數
- 17. 生成0.001359和1之間的隨機數
- 18. C++生成隨機數-1
- 19. 滾動兩個骰子給定次數C++從0到1之間的隨機生成數字
- 20. 在區間[0,n-1]中生成k個唯一的隨機數?
- 21. 如何使用Java在1到6之間生成6個隨機數?
- 22. 如何在1-10之間生成隨機數字?
- 23. 產生-1到1之間的隨機雙斯威夫特
- 24. 生成隨機整數,等於100
- 25. 隨機數生成兩個區間之間的雙打[a,b]
- 26. 創建1-100之間的隨機數,這並不能改變每次
- 27. 在C++/cli中生成1和max之間的隨機double
- 28. 兩個數字之間的隨機數字生成器 - MatLab
- 29. 生成0和2PI之間隨機相位在Excel
- 30. 插入隨機數成多維陣列(-1和1之間)
那麼,我想說的是在0和1之間生成100個數字,所以1,2,3,... 100和這個數字中的每一個都將具有介於0和1之間的值?謝謝 –
我不明白你的意思是「凍結它」。一個變量不會改變,除非你寫了,或者你要求可重複的隨機數?如果是這樣,請閱讀文檔中的「種子」。 – Daniel