C#中随机数的问题

Gle*_*654 1 c# random numbers

我确信这个问题很多,但我无法在任何有助于我的地方找到答案.我正在尝试在0和1之间创建一个随机双,并且我一直在收到错误.

map[x,y].setBit((int) Math.Round(((((double)Random.Next(100))/100) * 1.3), 2);
Run Code Online (Sandbox Code Playgroud)

我得到的错误说"非静态,方法或属性需要一个对象引用"System.Random.Next(int)"

Ant*_*ram 8

错误消息可以准确地告诉您问题.Random是一个班级.Next是一种非静态方法.您需要该类的实例或对象引用才能使用该方法.

var random = new Random();
// use random.Next(upperLimit);
Run Code Online (Sandbox Code Playgroud)

您应该注意,如果您random在紧密循环中使用,则需要在循环外部创建实例并重新使用它,或者在更高级别(例如类的成员字段)中创建实例.类接种的方式,连续的实例将生成相同的"随机"值序列.这是人们陷入的共同陷阱.


您还应该知道,根据您的用法,您将获得0到99之间的整数,转换为加倍,除以100 ...这是一种更直接的方法.简单地使用NextDouble(),它给出大于或等于0且小于1.0的值.

double d = random.NextDouble();
Run Code Online (Sandbox Code Playgroud)