簡體   English   中英

C#中的3位數隨機數

[英]3 digit random number in C#

有沒有比以下更好的方法來生成3位數的隨機數:

var now = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
string my3digitrandomnumber = now.Substring(now.Length - 7, 3);

謝謝..

是的 - 您當前的代碼根本不是隨機的。 它基於系統時間。 特別是,如果你同時在多個線程中使用它 - 或者甚至在同一個線程中連續幾次使用它 - 你每次都會獲得相同的數字。

您應該使用RandomRandomNumberGenerator (更安全)。

例如,一旦你有一個Random實例,你可以使用:

int value = rng.Next(1000);
string text = value.ToString("000");

(假設您希望數字為文本。如果您想要一個保證為三位數的整數 ,請使用rng.Next(100, 1000) 。)

但是, Random周圍有一些警告:

  • 不想每次使用它的時候創建一個新的實例; 除非您指定種子,否則這也是基於時間的
  • 它不是線程安全的

理想情況下,您可能需要每個線程一個。 關於隨機性的文章更多地討論了這一點並提供了一些示例代碼。

您可以使用Random類並調用Next(10)三次。

int r = (new Random()).Next(100, 1000);

嗯,首先,你有一個奇怪的設置,為什么你第一次得到約會?

您應該使用它來獲得3位數(小於1000)。

Random rand = new Random(); // <-- Make this static somewhere

const int maxValue = 999;
string number = rand.Next(maxValue + 1).ToString("D3"); 

maxValue + 1是因為Random.Next(int)的參數是一個獨占上限,這意味着返回的數字總是小於參數。 它永遠不會等於它。

new Random.NextDouble() * 1000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM