49. C# Random隨機類

摘要


C#中的Random類是一種用于生成偽隨機數(shù)的類,它可以產(chǎn)生滿足某些隨機性統(tǒng)計要求的數(shù)字序列余佃。隨機性是計算機程序中常用的概念之一扇单,因為它可以模擬自然界中的隨機事件。在程序中使用隨機性可以幫助我們模擬復雜的系統(tǒng)誉碴,比如模擬人類行為、天氣預報等等瓣距。

在使用Random類生成偽隨機數(shù)時翔烁,我們需要注意以下幾點:

  1. Random類的隨機數(shù)是偽隨機數(shù),也就是說旨涝,它們并不是真正的隨機數(shù)。雖然它們滿足隨機性的統(tǒng)計要求侣背,但它們的生成過程是可預測的白华。
  2. Random類生成的隨機數(shù)是均勻分布的,也就是說贩耐,它們在給定的范圍內(nèi)具有相等的概率分布弧腥。
  3. Random類生成的隨機數(shù)是基于計算機內(nèi)部的硬件實現(xiàn)的,所以在計算機的不同部件上生成的隨機數(shù)可能不同潮太。
  4. Random類生成的隨機數(shù)是基于時間戳的管搪,也就是說,每次生成隨機數(shù)時铡买,都會基于當前的時間戳來生成更鲁。

在使用Random類生成偽隨機數(shù)時,我們需要根據(jù)實際需要選擇合適的隨機數(shù)生成方法奇钞,并且需要注意隨機數(shù)的均勻分布和隨機數(shù)的基礎(chǔ)值等問題澡为。

正文


構(gòu)造函數(shù)

Random() 使用默認種子值初始化 Random 類的新實例。
Random(Int32) 使用指定的種子值初始化 Random 類的新實例景埃。

方法

Equals(Object) 確定指定對象是否等于當前對象媒至。 (繼承自 Object)
GetHashCode() 作為默認哈希函數(shù)顶别。 (繼承自 Object)
GetType() 獲取當前實例的 Type。 (繼承自 Object)
MemberwiseClone() 創(chuàng)建當前 Object 的淺表副本拒啰。 (繼承自 Object)
Next() 返回一個非負隨機整數(shù)驯绎。
Next(Int32) 返回一個小于所指定最大值的非負隨機整數(shù)。
Next(Int32, Int32) 返回在指定范圍內(nèi)的任意整數(shù)谋旦。
NextBytes(Byte[]) 用隨機數(shù)填充指定字節(jié)數(shù)組的元素剩失。
NextBytes(Span<Byte>) 用隨機數(shù)填充指定字節(jié)范圍的元素。
NextDouble() 返回一個大于或等于 0.0 且小于 1.0 的隨機浮點數(shù)蛤织。
NextInt64() 返回一個非負隨機整數(shù)赴叹。
NextInt64(Int64) 返回一個小于所指定最大值的非負隨機整數(shù)。
NextInt64(Int64, Int64) 返回在指定范圍內(nèi)的任意整數(shù)指蚜。
NextSingle() 返回一個大于或等于 0.0 且小于 1.0 的隨機浮點數(shù)乞巧。
Sample() 返回一個介于 0.0 和 1.0 之間的隨機浮點數(shù)。
ToString() 返回表示當前對象的字符串摊鸡。 (繼承自 Object)

NextBytes绽媒,生成Byte

static void Main(string[] args)
{
    var rand = new Random();
    var bytes = new byte[10];
    rand.NextBytes(bytes);
    Console.WriteLine("生成10個隨機數(shù):");
    foreach (byte byteValue in bytes)
    {
        Console.Write("{0, 5}", byteValue);
    }
    Console.WriteLine();
}

產(chǎn)生從10個10到99的數(shù)據(jù)

static void Main(string[] args)
{
    var rand = new Random();
    //產(chǎn)生從10個10到99的數(shù)據(jù)
    for (int ctr = 0; ctr < 10; ctr++)
        Console.Write("{0,8:N0}", rand.Next(10, 99));
    Console.WriteLine();
}

產(chǎn)生從小于1的double隨機數(shù)

static void Main(string[] args)
{
    //產(chǎn)生從小于1的double隨機數(shù)
    Random rnd = new Random();
    for (int ctr = 0; ctr < 10; ctr++)
    {
        Console.Write("{0,10}   ", rnd.NextDouble());
    }
}

生成隨機的64位整數(shù)

static void Main(string[] args)
{
    //用double*最大64位整數(shù)
    Random rnd = new Random();
    for (int ctr = 0; ctr < 10; ctr++)
    {
        Console.Write("{0,10}   ", rnd.NextDouble() * Int64.MaxValue);
    }
}

生成不重復隨機數(shù)

static void Main(string[] args)
{
    Hashtable hashtable = new Hashtable();
    Random rnd = new Random();
    //生成20個隨機數(shù)
    while (hashtable.Count!=20)
    {
        int v = rnd.Next(200);
        if (!hashtable.Contains(v))
        {
            hashtable.Add(v, v);
        }
    }
    foreach (DictionaryEntry item in hashtable)
    {
        Console.WriteLine(item.Value);
    }
}

注意:為了提高性能并避免無意中創(chuàng)建生成相同數(shù)字序列的單獨隨機數(shù)生成器,建議創(chuàng)建一個對象來生成一段時間的許多隨機數(shù)免猾,而不是創(chuàng)建新的對象來生成一個隨機數(shù)是辕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市猎提,隨后出現(xiàn)的幾起案子获三,更是在濱河造成了極大的恐慌,老刑警劉巖锨苏,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疙教,死亡現(xiàn)場離奇詭異,居然都是意外死亡伞租,警方通過查閱死者的電腦和手機贞谓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葵诈,“玉大人裸弦,你說我怎么就攤上這事∽鞔” “怎么了理疙?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長徊都。 經(jīng)常有香客問我沪斟,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任主之,我火速辦了婚禮择吊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘槽奕。我一直安慰自己几睛,他們只是感情好,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布粤攒。 她就那樣靜靜地躺著所森,像睡著了一般。 火紅的嫁衣襯著肌膚如雪夯接。 梳的紋絲不亂的頭發(fā)上焕济,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音盔几,去河邊找鬼晴弃。 笑死,一個胖子當著我的面吹牛逊拍,可吹牛的內(nèi)容都是我干的上鞠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼芯丧,長吁一口氣:“原來是場噩夢啊……” “哼芍阎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缨恒,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谴咸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骗露,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寿冕,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年椒袍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻茂。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡驹暑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辨赐,到底是詐尸還是另有隱情优俘,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布掀序,位于F島的核電站帆焕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叶雹,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一财饥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧折晦,春花似錦钥星、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至风喇,卻和暖如春宁改,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背魂莫。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工还蹲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豁鲤。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓秽誊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親琳骡。 傳聞我的和親對象是個殘疾皇子锅论,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • b站視頻:2022年C#進階教程-C#應該學到什么程度(針對編程思維)[https://www.bilibili....
    程序員ken閱讀 278評論 0 0
  • 1. 問題描述 關(guān)于數(shù)字精度問題,很多同學都肯定不陌生了楣号,最經(jīng)典的就是JS中的0.1+0.2 2. 具體表現(xiàn) C#...
    冰麟輕武閱讀 3,319評論 0 1
  • 0最易、獲取輸入?yún)?shù)的實際名稱 使用nameof 1、枚舉的轉(zhuǎn)換 2炫狱、C#判斷對象類型 3藻懒、用反射動態(tài)綁定控件事件 容...
    宅玖蔡閱讀 1,024評論 0 0
  • 記錄自己在學習c#遇到的知識點(容易忽略容易忘記得,或一些小技巧)[持續(xù)更新] 前言: 在大部分應用情況下,"效率...
    wwmin_閱讀 1,147評論 0 51
  • .NET .NET 平臺是一個開發(fā)框架,支持多種編程語言视译,用于構(gòu)建各種類型的應用程序嬉荆,包括桌面應用、Web 應用酷含、...
    三千闌干閱讀 152評論 0 0