【发布时间】:2010-11-18 18:40:11
【问题描述】:
在 C# 中选择两个数字之间的随机数的最佳方法是什么?
例如,如果我有一个低值 23 和一个高值 9999,那么在这两个数字之间并包含这两个数字的正确代码是什么? 提前致谢
【问题讨论】:
-
应该从范围中统一选择数字吗?
在 C# 中选择两个数字之间的随机数的最佳方法是什么?
例如,如果我有一个低值 23 和一个高值 9999,那么在这两个数字之间并包含这两个数字的正确代码是什么? 提前致谢
【问题讨论】:
像这样使用 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);
}
temp 每次都是相同的,因为生成 rnd 对象使用相同的种子,但像这样:
Random rnd = new Random();
for( int i = 0 ; i < 10; i++ ){
var temp = rnd.Next(23, 10000);
}
它会生成 10 个唯一的随机数(当然,偶然地,两个或更多的数字可能是相等的)
【讨论】:
这取决于您要查找的是整数还是双精度数。对于整数使用Random.Next(minValue, maxValue):
返回指定范围内的随机数。
注意 minValue 是包含的,而 maxValue 是排除的。
在指定范围内选择随机双精度没有等效方法。相反,您应该使用NextDouble 方法选择一个介于 0.0 和 1.0 之间的随机数,然后使用线性变换来扩展、减少和/或转换范围。
【讨论】: