首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#在while循环中两次返回随机数

C#在while循环中两次返回随机数
EN

Stack Overflow用户
提问于 2017-05-31 04:25:37
回答 3查看 424关注 0票数 0

嘿,我想从一个方法中返回一个随机数。我的代码工作正常,它返回一个随机数,但问题是如果我在同一个while循环中使用它两次,它返回的是相同的数字,我该如何解决这个问题?如果有解决问题的方法。

我的代码如下所示

代码语言:javascript
复制
 private int ReturnARandomNumber(int min, int max)
 {
    var randomNumber = new Random();
    return randomNumber.Next(min, max);
 }

  • Morten syhler
EN

回答 3

Stack Overflow用户

发布于 2017-05-31 04:27:31

您应该移动声明:

代码语言:javascript
复制
var randomNumber = new Random();

方法作用域之外的类作用域:

代码语言:javascript
复制
var randomNumber = new Random();
private int ReturnARandomNumber(int min, int max)
{
    return randomNumber.Next(min, max);
}
票数 2
EN

Stack Overflow用户

发布于 2017-05-31 04:29:18

不要每次都创建一个新的Random对象。Random使用当前时间作为默认种子,如果您经常在紧凑的循环中调用该函数,则在后续调用中它将获得相同的种子值。如果您在一段时间内重用同一对象,则Random的效果最好:

代码语言:javascript
复制
private Random randomNumber = new Random();
private int ReturnARandomNumber(int min, int max)
{     
    return randomNumber.Next(min, max);
}
票数 1
EN

Stack Overflow用户

发布于 2017-05-31 04:27:42

用于生成随机数的种子基于当前时间。在你的例子中,一种方法是让Random成为函数中的一个参数,这样你就可以在你的循环之外初始化它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44271324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档