• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            asm, c, c++ are my all
            -- Core In Computer
            posts - 139,  comments - 123,  trackbacks - 0

            /********************************************\
            |????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
            \********************************************/


            非“偽”隨機數的生成

            作者: Jerry Cat
            時間: 2006/05/16
            鏈接:?
            http://www.shnenglu.com/jerysun0818/archive/2006/05/16/7232.html

            問題的來由 - "隨機取m個數(在1到n的范圍之內),(m <= n),要求m個數沒有重復。有沒有
            什么好的算法,時間復雜度和空間復雜度都很好"

            ----------------------------------------------------------------
            方案一:
            取隨機數可以用C++標準的rand,至于M個不重復,你可以用std::set來解決,把取道的隨機數
            插入到set里面,set的size() == m就可以了, 具體可以這樣:

            #include <set>
            #include <stdlib.h>

            int main()
            {
            ?? std::set<int> s;
            ?? while(1)
            ?? {
            ????? int r = rand() % n;
            ????? s.insert(r);
            ????? if(s.size() == m)
            ????? {
            ???????? break;
            ????? }
            ?? }
            }

            ?由于set底層實現是紅黑樹,插入復雜度是對數級的^_^

            ----------------------------------------------------------------
            方案二:
            #include <iostream>
            #include <cstdlib>????? //用于rand()和srand()函數
            #include <ctime>??????? //設置不同的隨機數

            using namespace std;

            int main (){
            ??? srand( time( 0 ) );??? //調用不重復的隨機數函數
            ??? unsigned i;
            ??? for ( int n = 0; n++ < 10; )
            ??? {
            ??????? i = rand() ;??????? //對i 賦系統的隨機數
            ??????? cout << " The NO." << n << "is : " << i << endl;
            ??? }

            ??? return 0;
            }

            1. C++標準函數庫提供一隨機數生成器rand,返回0-RAND_MAX之間均勻分布的偽隨機整數。 RAND_MAX
            ?? 必須至少為32767。rand()函數不接受參數,默認以1為種子(即起始值)。

            ?? 隨機數生成器總是以相同的種子開始,所以形成的偽隨機數列也相同。失去了隨機意義。

            2. C++中另一函數srand(),可以指定不同的數(無符號整數變元)為種子。但是如果種子相同,偽
            ?? 隨機數列也相同。--一個辦法是讓用戶輸入種子,但是仍然不理想。

            3. 比較理想的是用變化的數,比如時間來作為隨機數生成器的種子。
            ?? 在 頭文件ctime中時間庫包含time函數,它可以返回一個表示時間、日期、月和年的數值使用如
            ?? 下調用可將該值設為rand的種子
            ?? srand(static_cast<unsigned>(time(static_cast<time_t*>(NULL))));

            4. 但, srand()并不是說使隨機數都不一樣,它只是使取隨機數的種子隨著時間而改變:)
            ?? So, 還是方案一好!

            posted on 2006-05-16 00:17 Jerry Cat 閱讀(2539) 評論(7)  編輯 收藏 引用

            FeedBack:
            # re: 非“偽”隨機數的生成
            2006-05-16 21:38 | Tauruser
            方案一中 int r = rand() % n;
            n是什么來的,沒有見你定義的?  回復  更多評論
              
            # re: 非“偽”隨機數的生成
            2006-05-29 01:57 | xfh
            n就是1-n中的n, 具體數值隨要求而定  回復  更多評論
              
            # re: 非“偽”隨機數的生成
            2007-01-19 14:54 | sjd163
            方案一,過程可以重復出現,怎么會不是偽隨機數呢?
            看不到不偽的隨機數在哪里?  回復  更多評論
              
            # re: 非“偽”隨機數的生成
            2007-01-19 16:46 | Dain
            啥叫偽  回復  更多評論
              
            # re: 非“偽”隨機數的生成
            2008-08-05 10:43 | xy
            方案一不具有操作性,太消耗時間  回復  更多評論
              
            # re: 非“偽”隨機數的生成
            2008-12-18 08:43 | 得到
            被騙點擊了  回復  更多評論
              
            # re: 非“偽”隨機數的生成
            2009-05-29 23:24 | pop
            方案一真的可行?命題要求m個數沒有重復,%n之后的m個數中極有可能有重復  回復  更多評論
              

            <2006年7月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            常用鏈接

            留言簿(7)

            隨筆檔案

            最新隨筆

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲国产精品一区二区三区久久| 日本加勒比久久精品| 国产精品女同久久久久电影院| 人妻精品久久久久中文字幕一冢本| 亚洲伊人久久大香线蕉综合图片| 欧美大香线蕉线伊人久久| 一级做a爰片久久毛片人呢| 亚洲国产一成久久精品国产成人综合 | 亚洲精品高清一二区久久| 亚洲国产精品久久久久| 伊人久久大香线蕉精品不卡| 久久夜色精品国产欧美乱| 久久精品国产亚洲Aⅴ香蕉| 日韩精品久久无码人妻中文字幕 | 精产国品久久一二三产区区别| 久久久久AV综合网成人| 久久午夜福利电影| 亚洲国产精久久久久久久| 精品久久久久香蕉网| 久久精品极品盛宴观看| 久久国产成人午夜aⅴ影院| 国产麻豆精品久久一二三| 伊人热热久久原色播放www| 国产精品成人久久久久三级午夜电影| 久久久久亚洲av成人网人人软件 | 97精品国产97久久久久久免费| 99久久亚洲综合精品成人| 91久久精品91久久性色| 色欲久久久天天天综合网精品 | 亚洲欧洲精品成人久久曰影片 | 久久99国产精品久久99果冻传媒| 一本色道久久综合亚洲精品| 日韩久久久久中文字幕人妻| 精品久久综合1区2区3区激情| 久久精品一区二区国产| 狠狠色噜噜狠狠狠狠狠色综合久久| 熟妇人妻久久中文字幕| 久久久久99精品成人片试看| 亚洲精品白浆高清久久久久久| 777午夜精品久久av蜜臀| 久久久久亚洲av无码专区喷水|