Tag: 随机

C#中的加权随机数生成

题 如何随机生成两种状态中的一种,10%的时间内产生“红色”概率,90%的时间产生“绿色”? 背景 每2秒钟,绿灯或红灯都会闪烁。 该序列将持续5分钟。 闪烁灯的总发生次数应为300。

使用C#的随机数

我正在寻找生成1到5百万之间的随机数。 这个过程不一定很快(虽然它会很好),但它必须尽可能随机(我知道什么都不是随机的)。 我有种子的各种数据源。 我不确定.NET Random类是否足够好。 这将用于选择中奖彩票。

来自种子的随机数

我有一个应用程序,如果我的程序使用具有基于其种子的模式的RNG,它会变得非常明显,因为它根据景观的x坐标构建了景观。 如果你每次调用Next()时Random运行良好,我每次使用相同的输入时都需要能够输出相同的输出,因此不能依赖Next() 。 相反,我尝试每次使用输入种子简单地创建一个新的Random 。 我知道,这不是一个好主意,它表明了。 模式非常明显,具有交替的高值和低值,并且在整个景观中具有明显的整体趋势。 我不想每次都制作新的生成器,但即便如此,我还是查看了加密安全的RandomNumberGenerator ,看看我是否至少可以暂时使用它。 但是,正如预期的那样,我无法播种它,让我没有任何可重复的输出(这是RandomNumberGenerator )。 简而言之,两个常见的RNG似乎都不适合我的目的。 我需要能够接收一个数字并根据该值返回一个随机数,而输出中没有明显的模式。 有没有其他方法可以使用上述两种,或者是否有一种我以前没用过的方法更符合我的目的? 为清楚起见,我试图编写的方法如下: public int RandomInt(int input) { int randomOutput; //Be random return randomOutput; } 每次给出相同的input时,它将返回相同的值。

Random(int seed)保证什么?

我正在开发一个项目,它依赖于为更大的集合随机分配用户(没有任何花哨,只是统一)的子集。 每个用户都有一个从同构到整数的唯一标识符。 据我所知,有两种方法可以做到这一点。 在用户和上述较大集合的键控元素之间创建数据库联结表,并为每个用户创建一次函数。 这对我的需求来说有点不切实际,所以我宁愿做…… 在运行时,通过类似的函数确定子集,但使用唯一的用户ID作为种子值,并将该集合放在内存中。 下次需要它时,从更大的集合中再次创建它。 所以我的问题是,如果我使用.NET Random对象创建第二个使用user-id作为种子值的函数,Microsoft是否保证将来不会更改Random算法? 即所有新的Random(n)的Next()序列在所有机​​器上都会永远相同吗? 或者,我可以创建自己的随机生成器,并将其与我的代码打包。 事实上,这是我可能会做的,但我仍然很想知道答案。

计算百分比分布中的下一个项目

我正在开展一个项目,涉及将电话转移到多个目的地。 例如,我想: 10%的电话到达目的地A. 20%的电话前往目的地B. 30%的电话转到目的地C. 40%的电话前往目的地D. 目的地数量及其百分比必须是可配置的。 我一直在考虑如何做到这一点,玩电子表格和一些代码,我想出了这个: 对于每个目的地,取一个随机数,乘以百分比,然后选择编号最大的目的地。 像这样: Item: RANDOM * PERCENTAGE = RESULT A: 48 * 10 = 480 B: 33 * 20 = 660 C: 81 * 30 = 2430 <— Highest number, select C D: 5 * 40 = 200 我以为我已经解决了,因为D显然会被选中最多,其次是C,然后是B,最不是A. 但它不起作用。 如果我这样做5000次,并计算每个目的地被选中的实际百分比,我得到这个: 1%的电话前往目的地A. 12%的电话前往目的地B. 31%的电话转到目的地C. 56%的电话到达目的地D. 这是我用来测试这个的代码: // Initialise […]

在C#中C ++相当于新的Random(种子)

当我们在C#中使用随机数生成器时,我们可以定义一个变量 private Random _rndGenerator; 在课堂上然后打电话 _rndGenerator = new Random(seed); 正确地在类的构造函数中。 我的问题是: 什么是这种定义的C ++等价物(即类中的RNG)。 我认为这不是一个正确的使用方法 srand((unsigned int)seed); 对?

生成每个字符组合,直到某个字长

我将在几周后为我的计算机和信息安全课程做一个安全演示,在这个演讲中,我将展示不同攻击(字典,彩虹和暴力)的利弊。 我做的字典和彩虹攻击很好,但我需要在飞行中产生暴力攻击。 我需要找到一种算法,让我循环通过字母,符号和数字的每个组合,直到某个字符长度。 举个例子,对于12的字符长度,第一代和最后几代将是: a ab abc abcd … … zzzzzzzzzzzx zzzzzzzzzzzy zzzzzzzzzzzz 但它也会使用数字和符号,所以我很难解释……但我认为你明白了。 只使用ASCII表中的符号就可以了。 我可以用一个ASCII函数用计数器做这个图片,但我无法解决这个问题。 如果有人可以提供一些源代码(我可能会使用C#)甚至一些伪代码,我可以编写一个函数,这将是伟大的。 先感谢您。 🙂

快速随机发生器

如何在C#中创建一个快速RNG(随机数生成器),支持使用maxValue(和/或minValue)填充字节数组? 我找到了这个http://www.codeproject.com/KB/cs/fastrandom.aspx但没有这些function。

你如何在C#中获得Random的当前种子?

在我的游戏中,我将使用随机值来选择玩家从胸部获得的奖励。 问题是你可以快速保存并快速加载,这意味着他们可以继续重新加载以重新随机化,直到他们得到他们想要的东西。 有没有办法让我可以获取我的Random对象的当前种子值,并在加载时可能返回到同一点,这样他们就不会滥用随机化?

RNGCryptoServiceProvider对大型随机数进行卡方检验失败

有没有人知道为什么RNGCryptoServiceProvider在试图获得超过300,000,000的数字时失败进行卡方检验。 我试图得到0-1,000,000,000范围内的随机数,结果我得到了卡方检验失败,0-300,000,000范围内的数字显得比其他数字更多。 最终我将大数字forms与较小的数字(0-99 * 100M + 0-99,999,999)和卡方测试通过相结合。 任何人都可以大量解释这个exception现象吗? 我使用以下代码来获取数字 [Timeout(TestTimeout.Infinite), TestMethod] public void TestMethodStatistic() { Dictionary appearances = new Dictionary(); UInt64 tenBillion = 10000000000; for (UInt64 i = 0; i < 10000000; i++) { UInt64 random = GetSIngleRandomNumberInternal() % tenBillion; UInt64 bucket = random /10000000; if (!appearances.ContainsKey(Convert.ToInt64(bucket))) { appearances.Add(Convert.ToInt64(bucket), 0); } appearances[Convert.ToInt64(bucket)]++; } string results […]