繁体   English   中英

C#中的随机数问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM