我正試圖用給定概率的最大值生成一個隨機概率。我們怎麼能在C中產生0到0.5之間的隨機實數值?如何在C中生成一個真正的隨機數?
回答
您不能在便攜式C99中生成真的隨機數。但是你可以使用一些PRNG(也許在當前時間播種)。
而電腦並不知道真正的真實數字。只有浮點。看到http://floating-point-gui.de/
其實我相信宇宙不知道實數(想想一些基數的論點類似於Cantor's diagonal argument)。但問問物理學家或哲學家。
某些操作系統或實現具有PRNG,並且一些系統(包括)硬件甚至具有真正的隨機生成器。
閱讀關於random(3) & drand48(3)如果您的系統有它的話。如果在Linux上,也看到random(4)
你可以嘗試
double my_random_number /* between 0 & 0.5 */ = drand48() * 0.5;
產生一個幾乎均勻分佈的隨機數> = 0和< 0.5
實際上,Windows上的Unix-like框和'CryptGenRandom'上的'/ dev/random'可能很好地從許多現代計算機上基於硬件的隨機數生成器獲得熵,因此可能是真正隨機的,不僅僅是算法上的僞-隨機。 – 2014-11-04 18:34:49
我沒有在第二段中提到過。隨機(4)'告訴它。 – 2014-11-04 18:36:25
我認爲他在數學意義上使用「真實」 http://en.wikipedia.org/wiki/Real_number而不是「真正」的「真正的」意義:http://en.wikipedia.org/wiki/Random_number_generation#.22True.22_random_numbers_vs._pseudo-random_numbers雖然很好的答案,但。 – DavidO 2014-11-04 18:36:29
- 1. 真正的隨機c#生成器
- 2. 在C#中生成真正的隨機數字很簡單嗎?
- 3. 生成真正的隨機數
- 4. 真正的隨機數生成
- 5. C++:如何從一個數組中生成一個隨機數
- 6. 如何在Haskell中隨機生成一個隨機生成的數字列表
- 7. 如何在C#中生成一個隨機數?
- 8. 我如何使用隨機類在C#中生成一個隨機數(XNA)
- 9. 如何在AS3中創建一個真正的隨機數?
- 10. 如何生成一個隨機數
- 11. 在SML中生成一個隨機數
- 12. 在JavaScript中生成一個隨機數
- 13. 在LibGDX中生成一個隨機數
- 14. 在Uppaal中生成一個隨機數
- 15. 在Haskell中生成一個隨機數
- 16. 在CakePHP中生成一個隨機數?
- 17. 如何生成大的隨機數C
- 18. 如何在C++中一次生成不同的隨機數?
- 19. 如何在c中生成唯一的隨機數字#
- 20. 如何生成一個隨機數......?在c#
- 21. 如何在C範圍內生成一個隨機數?
- 22. 生成不重複的隨機數在一個真正的大範圍
- 23. C++爲psudo隨機數生成器生成一個很好的隨機種子
- 24. Random.org真正的隨機C++
- 25. 在c中生成整數隨機數#
- 26. C++在函數中生成隨機數
- 27. 在隨機生成50個隨機數中使用隨機數#
- 28. 如何在objective-c中生成一個隨機日期?
- 29. C++中的C++隨機數生成器
- 30. 生成一個隨機數,但每個隨機數在LUA/Love2d
我會建議編寫的代碼生成0和1之間的值,然後將其限制爲0.5。 – 2014-11-04 18:23:56
這是一個關於這個問題的好視頻:http://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful – francis 2014-11-04 18:23:57
只用C?你不能。你可以做的最好的事情是從熵源中讀取一個真正的隨機值,並從物理世界獲得熵。 – datenwolf 2014-11-04 18:24:40