隨機數產生器C語言

來源:互聯網
上載者:User

  這個東西,對於數學上的分析我看明白了90%.但並未做深入研究.這個代碼是抄來的,核心部分是抄來的.感覺不錯.

  產生固定的隨機數序列,只要種子一樣的話.這個隨機數產生器比較透明,而且較容易改動.很不錯.

  每次實現代碼的時候,都會發現很多問題.而且,一旦寫上了代碼,時光就飛逝了...很不錯.

  好吧,帖出來吧.又是來網吧,又是邊下電影邊寫Blog,呵呵.很不錯.

/*10-35-11-02-08-20.11.c -- 第十章第三十五題*/<br />#include <stdio.h></p><p>#define FALSE (0)<br />#define TRUE (1)<br />#define A (48271L)<br />#define M (2147486647L)<br />#define Q (M / A)<br />#define R (M % A)</p><p>unsigned long int Seed ;</p><p>int main (void) ;<br />int eatEnter (void) ;<br />void initialize (unsigned long int initial_value) ;<br />double random (void) ;</p><p>int main (void)<br />{<br />unsigned long int initial_value ;<br />char ch ;</p><p>printf ("Please input a initial value (>= 0, enter 'q' to quit.):") ;<br />while (scanf ("%lu", &initial_value) != 0)<br />{<br />printf ("Initial value has been initialized is : %lu/n", initial_value) ;<br />eatEnter () ;<br />initialize (initial_value) ;<br />puts ("Enter 'q' to input a new initial value and enter any key else to generate a random value again.") ;<br />while ((ch = getchar ()) != 'q')<br />{<br />if (TRUE == eatEnter ())<br />break ;<br />printf ("It is %lf./n", random ()) ;<br />}<br />printf ("Please input a initial value (>= 0, enter 'q' to quit.):") ;<br />}</p><p>return 0 ;<br />}</p><p>int eatEnter (void)<br />{<br />if ('q' == getchar ())<br />return TRUE ;<br />else<br />return FALSE ;<br />}</p><p>void initialize (unsigned long int initial_value)<br />{<br />Seed = initial_value ;<br />}</p><p>double random (void)<br />{<br />unsigned long int temp_seed ;</p><p>temp_seed = A * (Seed % Q) - R * (Seed / Q) ;<br />if (temp_seed >= 0)<br />Seed = temp_seed ;<br />else<br />Seed = temp_seed + M ;</p><p>return (double) Seed / M ;<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.