[英]Trouble with Random Numbers in C#
我敢肯定这个问题被问了很多,但是我找不到任何可以帮助我的答案。 我正在尝试在0和1之间创建一个随机双精度数,并且不断出错。
map[x,y].setBit((int) Math.Round(((((double)Random.Next(100))/100) * 1.3), 2);
我得到的错误是:“非静态,方法或属性“ System.Random.Next(int)需要对象引用”
错误消息将告诉您确切的问题。 Random
是一类。 Next
是一种非静态方法。 您需要类的实例或对象引用才能使用该方法。
var random = new Random();
// use random.Next(upperLimit);
您应该注意,如果在紧密循环中使用random
,则需要在循环外部创建实例并重用它,或者在更高级别(例如,类的成员字段)重用它。 类的种子播种方式,连续的实例将生成相同的“随机”值序列。 这是人们陷入的普遍困境 。
您还应该意识到,根据您的用法,您将获得一个从0到99的整数,转换为两倍,然后除以100 ...是一种更简单的方法。 只需使用NextDouble()
,它给出的值大于或等于0且小于1.0。
double d = random.NextDouble();
随机是一类。 Random.Next()是一种非静态方法。
因此,您需要实例化Random
类的实例。 (注意:正如Spender指出的那样,请不要将此局部设置为循环...)
Random rnd = new Random();
map[x,y].setBit((int) Math.Round(((((double)rnd.Next(100))/100) * 1.3), 2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.