我試圖用C++生成一些8位隨機數,並且不想使用除法(如rand()%8或任何縮放方法)。是否有任何有效的隨機BYTES生成器(不使用分區)?
一個算法我在網上找到的Park-Miller-Carta Pseudo-Random Number Generator
這是一個32位的隨機數發生器,沒有分歧。隨着這些隨機數,我試圖提取它們的低8位或高8位,以便我可以得到一些隨機字節,但這似乎不起作用,因爲這些位不是那麼隨機的。
是否有任何技巧可以解決這個問題,或者是否有任何其他算法可以做到這一點?
你想避免分割/模數的任何特定原因? – 2012-02-17 21:34:23
你只是想避免使用「%8」?如果是這樣,編譯器將不會使用分頻。編譯器對2的權力是聰明的,並將使用「&7」來代替。 – BitBank 2012-02-17 21:37:28
因爲我在做一些系統級的實驗。分部太慢了。 – Arthur 2012-02-17 21:39:01