C# 中的随机数 [重复]

2024-04-26

可能的重复:
随机数生成器没有按我计划的方式工作(C#) https://stackoverflow.com/questions/767999/random-number-generator-not-working-the-way-i-had-planned-c

我创建了一个返回随机数的方法:

public static int SelectRandomMachine(int max)
{
int seed = (int)DateTime.Now.Ticks;
Random rndNumber = new Random(seed);
int randMachine = rndNumber.Next(0, max);
return randMachine;
}

如果我调用该方法两次,目前它会返回相同的随机数:

randM1 = SelectRandomMachine(maxNumber);
randM2 = SelectRandomMachine(maxNumber);

任何建议将不胜感激。


提示看这一行:

int seed = (int)DateTime.Now.Ticks;

如果您快速连续执行该行两次,您认为值会是多少?

例如:

int seed1 = (int)DateTime.Now.Ticks;
int seed2 = (int)DateTime.Now.Ticks;

// Write it out *after* executing; console output can take a while
Console.WriteLine(seed1);
Console.WriteLine(seed2);

See my 关于随机性的文章 http://csharpindepth.com/Articles/Chapter12/Random.aspx获取解决方案和更多信息。

编辑:这是一个缺乏线程安全导致问题的快速而肮脏的例子:

using System.Collections.Generic;
using System.Threading;

class Program
{
    const int Iterations = 1000000;
    static readonly Random rng = new Random();

    static void Main(string[] args)
    {
        List<Thread> threads = new List<Thread>();
        for (int i = 0;  i < 8; i++)
        {
            Thread t = new Thread(ExerciseRandom);
            threads.Add(t);
            t.Start();
        }
        foreach (Thread t in threads)
        {
            t.Join();
        }
        Console.WriteLine(rng.Next());
        Console.WriteLine(rng.Next());
        Console.WriteLine(rng.Next());
    }

    static void ExerciseRandom()
    {
        for (int i = 0; i < Iterations; i++)
        {
            rng.Next();
        }
    }
}

我的盒子上的输出:

0
0
0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的随机数 [重复] 的相关文章

随机推荐

  • 如何在 Composable 中使用示例数据?

    在 XML 中 我们通过使用以下属性来使用样本名称 日期等 工具 样本 名字 有什么方法我们可以使用类似的示例数据 工具 样本在预览可组合项中 您可以使用 PreviewParameter https developer android c
  • 将简单的单色绘图图像转换为二维文本数组

    我正在尝试开发一种算法 将简单的单线图像 即迷宫 转换为文本二维数组 例如 下面的图像 它将被转换为以下文本数组
  • Solidity ParserError:预期为“;”但得到了“{”

    使用版本0 6 0 pragma solidity 0 6 0 contract Test function sendValue address payable recipient uint256 amount external bool
  • 一般从 boost::variant 转换为类型

    我有一个typedef boost variant
  • 正则表达式:将单词与侵入性符号相匹配

    我试图将所有 单词 与侵入性星号相匹配 包括开头和结尾 但没有其他标点符号 例如 我期待下面的七场比赛 相反 我得到了两个 text star tar s ar st r sta tar sta sta p re compile r b w
  • Android 风格特定的依赖树

    我的 Android 应用程序有多种风格 生产 Staging Review等以及Release and Debug构建类型 当我跑步时 gradlew app dependencies它自然地返回每个风味 构建类型的依赖树 生产发布 生产
  • CSS 中的重叠文本 - 如何更改它?

    我正在尝试更改 css 文件中的重叠元素 文本 一行文本 在常规浏览器中 在移动设备中显示为两行文本 重叠在一起 此更改适用于网站的移动版本 横向平板电脑的 media 部分 目前 标题 h2 文本在 iPad 平板电脑上重叠 来自 h2
  • 自定义菜单快捷键

    I am working on an application that has a Menu on top of it I want to use a different method for shortcut keys being thi
  • chrome和firefox中的getTime结果不同

    我需要转换Date反对timestamp 所以创建新的Date来自日期时间的对象和使用getTime 但它在 Chrome 和 Firefox 中产生不同的结果 这取决于时区 var date new Date 2013 08 26T14
  • C# 对象的事务?

    只是好奇 是否支持普通 C 对象上的事务 喜欢 using var transaction new ObjectTransaction obj try obj Prop1 value obj Prop2 value obj Recalcul
  • Hive(查找连续 n 列中的最小值)

    我在 Hive 中有一个表 有 5 列 即电子邮件 a first date b first date c first date d first date a b c d 是用户可以执行的 4 个不同操作 上表中的 4 列表示用户执行第一个
  • 在 TFS 中以不同方式共享项目文档,您的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道在 TFS 2010 中管理 和版本控制 不同类型的项目文档 例如版本控制目标文档 例如 用例 主测试计划 质量保证计划和非版本控制相关
  • SQLAlchemy Pandas 从 jsonb 读取 sql

    我想用 pandas 生成一个数据框read sql https pandas pydata org pandas docs stable generated pandas read sql html来自我使用 PostgreSQL 进行的
  • 更改永久链接 WordPress 后出现 404 错误

    我的网站是一个Wordpress site创建于PHP 我已将永久链接默认更改为帖子名称 它工作得很好Chrome and Firefox但在 IE8 中不行 首页显示正确 但当我单击另一个页面的链接时 它显示 404 页面未找到错误 我使
  • Hibernate不生成级联

    我有一套hibernate hbm2ddl auto创建以便 Hibernate 为我在 mysql 中创建表 但是 休眠似乎没有正确添加Cascade关于表中的参考文献 然而 当我删除一行 并且我有一个删除级联作为休眠注释时 它确实有效
  • 强制 C++ 编译器检查异常处理

    我想知道是否有一些编译器参数 最好是在 gcc g 中 它将缺少 try catch 块视为错误 这是java中的标准行为 我一直很喜欢它 由于 Java 中的检查异常依赖于throw签名 您可以阅读为什么您不想使用throwC 中的函数签
  • MySQL 唯一 id 或组合 id

    我的项目和开发人员计划的结构如下 developer table id developer name etc project table id project name etc developer project table 因为一个开发人
  • php zlib:如何从字符串变量动态创建内存中的zip文件?

    这就是我需要的 a array folder gt anyfolder filename gt anyfilename filedata gt anyfiledata 我需要使用 a 中的压缩数据创建一个变量 zip 并将此 zip 输出到
  • Sass 更改监视间隔,更频繁地编译

    我正在使用 sass 将 scss 编译为 css 每次保存后 大约需要 15 20 秒才能编译为 scss 文件到 css 因此我需要刷新几次才能看到预期结果 有没有办法告诉 Sass 更频繁地检查更改 这是我使用的命令 sass wat
  • C# 中的随机数 [重复]

    这个问题在这里已经有答案了 可能的重复 随机数生成器没有按我计划的方式工作 C https stackoverflow com questions 767999 random number generator not working the