Tag: 随机

使用GUID是一种生成随机字符串和数字的有效方法吗?

可能重复: 随机是System.Guid.NewGuid()? 基于这个问题,我想知道是否使用GUID生成随机字符串和数字有任何缺陷吗? 因此,例如,如果我想要一个随机字符串和32个或更少字符的数字,我可以使用以下C#代码: string s = Guid.NewGuid().ToString().Replace(“-“, “”); 如果长度需要小于32,我将截断字符串,如果需要更长,我会将多个GUID一起添加。 这种方法有哪些缺陷? 在我写完之后,我意识到一个缺陷就是它只会有字母a到f所以我会修改这个问题: 这是一个真正随机的6个字符和10个数字的序列吗?

如何创建非重复随机数的数组

我在C#中有一个彩票应用程序,它接受要绘制的数字的数量以及要绘制的最大数量。我已编码为创建一个包含所需随机数的数组,但我需要它们是唯一的并且我很难做到这一点如果有人能给我一些建议,我将非常感激,谢谢 这是我到目前为止的代码: class Lottery { static int[] numberHolder; //array to be filled with numbers up to an //amount entered by the user eg 42 Max static int[] drawHolder; //array to hold the each random number //drawn from the pool of numbers eg 7 numbers public Lottery() //Lottery class Constructor { } //method which takes in […]

c# – 重复获取相同的随机数

可能重复: 随机数发生器不按我计划的方式工作(C#) 嗨, 下面是我正在编写的小应用程序的完整代码 – 它返回一个包含字母数字代码的ArrayList。 我遇到的问题是,当“踩踏”代码时,e.Result会正确返回,每个项目都不同。 但是,如果我让应用程序在没有断点的情况下运行,我只会得到同一个变量的多个实例: public partial class AlphaNum : Form { public AlphaNum() { InitializeComponent(); // Initialise BackGroundWorker Reporting backgroundWorker1.WorkerReportsProgress = true; // Initialise BackGroundWorker Cancel backgroundWorker1.WorkerSupportsCancellation = true; } private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); button1.Enabled = false; } private int RandomNumber(int min, int max) { Random random […]

如何随机化数组中的数字

我有一个像这样的数组: int[] numbers = new [] { 1, 2, 3, 4 }; 我想随机化这个(每次都不同),这样它就会使另一个数组具有相同的大小和数字,但每次都以不同的顺序排列。

在高斯范围内生成随机数?

我想使用随机数生成器,在高斯范围内创建随机数,我可以自己定义中位数。 我已经在这里问了一个类似的问题,现在我正在使用这段代码: class RandomGaussian { private static Random random = new Random(); private static bool haveNextNextGaussian; private static double nextNextGaussian; public static double gaussianInRange(double from, double mean, double to) { if (!(from < mean && mean < to)) throw new ArgumentOutOfRangeException(); int p = Convert.ToInt32(random.NextDouble() * 100); double retval; if (p < (mean * Math.Abs(from […]

如何在C#程序中生成一组随机字符串,以便不进行简单的预测?

我遇到了以下问题:从受限制的字母表中生成N个唯一的字母数字字符串。 这是我在C#中的解决方案: string Alphabet = “ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”; Random generator = new Random(); const int ToGenerate = 10000; const int CharactersCount = 4; ArrayList generatedStrings = new ArrayList(); while( generatedStrings.Count < ToGenerate ) { string newString = "Prefix"; for( int i = 0; i < CharactersCount; i++ ) { int index = generator.Next( Alphabet.Length ); char character […]

用C#实现Box-Mueller随机数发生器

从这个问题:随机数发生器将数字吸引到范围内的任何给定数字? 我做过一些研究,因为我之前遇到过这样一个随机数发生器。 我记得的只是“穆勒”的名字,所以我想我找到了,在这里: Box-Mueller变换 我可以在其他语言中找到它的大量实现,但我似乎无法在C#中正确实现它。 例如,这个页面,用于生成高斯随机数的Box-Muller方法表示代码应该如下所示(这不是C#): #include #include #include #include double gaussian(void) { static double v, fac; static int phase = 0; double S, Z, U1, U2, u; if (phase) Z = v * fac; else { do { U1 = (double)rand() / RAND_MAX; U2 = (double)rand() / RAND_MAX; u = 2. * U1 – […]

从目录中选择随机文件

我已经看过一些例子但到目前为止在C#中都没有,在目录下选择随机文件的最佳方法是什么? 在这种特殊情况下,我想每隔15分钟从“C:\ wallpapers”中选择一个壁纸。 谢谢。

如何在C#中保存Random Generator的状态?

出于测试目的,我使用给定的种子创建随机数(即不基于当前时间)。 因此整个计划是确定性的。 如果发生了什么事情,我希望能够在“事件发生前不久”迅速恢复一个点。 因此,我需要能够将System.Random恢复到以前的状态。 有没有办法提取种子,我可以用来重建随机生成器?

RNGCryptoServiceProvider – 更快地生成范围内的数字并保留分布?

首先,我正在打电话,所以请原谅糟糕的格式! 我现在已经做了很多搜索,但没有找到明确的答案。 如果没有一个,那么公平,但我确信有人比我必须有一个好答案更聪明! 我正在使用RNG加密提供程序以真正天真的方式生成范围内的数字: byte[] bytes = new byte[4]; int result = 0; while(result max) { RNG.GetBytes(bytes); result = BitConverter.ToInt32(bytes); } 当范围足够大以至于获得结果的可能性很大时,这是很好的,但是今天早些时候我遇到的范围足够小(在10,000个数字内)可能需要一个年龄。 所以我一直在努力想出一个更好的方法来实现合理的分配,但会更快。 但是现在我正在深入学习数学和统计数据,而我在学校根本就没有这样做,或者至少如果我这样做,我已经忘记了这一切! 我的想法是: 获得最小和最大的最高设置位位置,例如,对于4,它将是3,对于17,它将是5 从prng中选择至少包含高位的字节数,例如,在这种情况下为8位 查看是否设置了允许范围(3-5)中的任何高位 如果是,请将其转换为包含高位的数字 如果该数字在最小值和最大值之间,则返回。 如果以前的任何测试失败,请重新开始。 就像我说的那样,这可能非常幼稚,但我相信它会在比目前的实施更快的范围内返回一个匹配。 我现在不在电脑前所以无法测试,明天早上英国时间会这样做。 但当然速度并不是我唯一关注的问题,否则我只会使用随机 (如果有人会非常友好,那么在那里需要几个刻度线来正确格式化 – 它们不在Android键盘上!)。 我对上述方法的最大担忧是,我总是丢掉由prng生成的最多7位,这看起来很糟糕。 我想到了将它们考虑在内的方法(例如一个简单的添加),但它们似乎非常不科学的黑客! 我知道mod技巧,你只需要生成一个序列,但我也知道它的弱点。 这是死路一条吗? 最终,如果最好的解决方案是坚持当前的实现,我会觉得必须有更好的方法!