[英]3 digit random number in C#
有沒有比以下更好的方法來生成3位數的隨機數:
var now = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
string my3digitrandomnumber = now.Substring(now.Length - 7, 3);
謝謝..
是的 - 您當前的代碼根本不是隨機的。 它基於系統時間。 特別是,如果你同時在多個線程中使用它 - 或者甚至在同一個線程中連續幾次使用它 - 你每次都會獲得相同的數字。
您應該使用Random
或RandomNumberGenerator
(更安全)。
例如,一旦你有一個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.