2010-11-18 126 views
2

什么是在C#中的两个数字之间选择一个随机数的最佳方法?随机函数在C#

例如,如果我有一个23的低值和9999的高值,那么正确的代码是什么来选择一个包含这两个数字之间的随机数? 在此先感谢

+0

数字应该从范围内统一选择? – 2010-11-18 12:21:10

回答

7

这取决于您是否正在寻找一个整数或双。对于整数使用Random.Next(minValue, maxValue)

返回指定范围内的随机数。

请注意,minValue是包含值,但maxValue是独占的。

在指定范围内没有选择随机双数的等价方法。相反,您应该使用NextDouble方法来选择0.0到1.0之间的随机数,然后使用线性变换来扩展,缩小和/或平移范围。

+0

你确定吗?我在VS中编写这段代码,但在随机函数中没有像'Next'这样的子类。 Tnx为您提供帮助 – Amra 2010-11-18 09:42:55

+0

@Eva:这是一个实例方法 - 您需要一个Random对象(例如,您的程序启动时可以创建一个)。 – 2010-11-18 09:45:20

+0

@Eva - 如果这是你正在做的事情,没有静态的Next函数,所以你不能简单地写Random.Next。详情请参阅我的回答。 – 2010-11-18 09:46:20

12

使用Random类是这样的:

Random rnd = new Random(); 
rnd.Next(23, 10000); 

请确保您只初始化RND对象一次,以确保它真正产生随机值给你。

如果你把这个循环,例如:

for(int i = 0 ; i < 10; i++){ 
    Random rnd = new Random(); 
    var temp = rnd.Next(23, 10000); 
} 

临时会每次都一样的,因为相同的种子被用于生成RND对象,但这样的:

Random rnd = new Random(); 
for(int i = 0 ; i < 10; i++){ 
    var temp = rnd.Next(23, 10000); 
} 

它会产生10个唯一的随机数(但当然,偶然的情况下,两个或更多的数字可能是相等的)

+1

+1,用于解释典型的“随机”问题。 – 2010-11-18 09:43:37

+0

谢谢。如果我想从文本文件中选择一个随机字符串,我该怎么办? – Amra 2010-11-18 09:46:35

+0

@Eva:最简单的方法是从文本文件中读取所有行,记住它们并对它们进行计数,然后根据计数选择一个随机数。 – 2010-11-18 09:49:02