Tag: 随机

这种生成随机数的方法有多“好”?

我在google上搜索RNGCryptoServiceProvider,其中包含如何限制Max和Min之间范围的示例,并且仍能获得均匀分布。 在我使用模运算符之前,但有时我得到奇怪的值(高于Max)…无论如何这个代码(信用到未知)种子随机使用来自RNGCCryptoServiceProvider的新种子,每次调用该方法。 你们有什么感想? public static int GetRandom(int min, int max) { byte[] b = new byte[sizeof(int)]; new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b); int i = BitConverter.ToInt32(b, 0); Random r = new Random(i); return r.Next(min, max); }

如何在C#中创建一个独特的随机字符序列?

我正在我的应用程序中实现URL缩短function,以便为我的用户提供可在Twitter中使用的更短的替代URL。 关键是要独立于提供相同服务的缩短服务,并将其作为我的网络应用程序的一项function。 创建一个大约6个字符的独特随机字符序列的最佳方法是什么? 我计划将其用作我的数据库中具有备用URL的项目的索引。 编辑: 此function将用于工作板网站,每个新的工作广告将获得一个自定义URL,其标题加上在Twitter中使用的较短的一个。 也就是说,长期以来,独特的6个字符组合的总数将绰绰有余。

生成多个随机数

我想生成25个唯一的随机数,并将它们列在控制台中。 这些数字至少应为10个字符。 有什么简单的方法吗?

如何在0和1之间生成加密安全的Double?

我知道如何使用伪随机数生成器的NextDouble方法生成0到1之间的随机数。 var rng1 = new System.Random(); var random1 = rng1.NextDouble(); // generates a random double between 0 and 1.0 我知道如何使用加密安全随机数生成器填充随机字节数组。 Byte[] bytes = new Byte[8]; var rng2 = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng2.GetBytes(bytes); // generates 8 random bytes 但是如何将RNGCryptoServiceProvider的字节数组输出转换为在0(包括)和1(不包括)之间均匀分布的随机数?

C#中分形Perlin噪声函数的均匀分布

我的Perlin噪声函数(在0.75持续时间内加上6个八度的3D单形)产生一个double s的2D数组。 这些数字各自归一化为[-1,1],均值为0.我将它们钳制以避免exception,我认为这是由于浮点精度问题,但我相当确定我的缩放因子足够好在理想情况下,将噪声输出限制在这个邻域。 无论如何,这都是细节。 关键是,这是一个256乘256的噪音arrays: 具有正常拟合的直方图如下所示: Matlab的lillietest是一个函数,它应用Lilliefors测试来确定一组数字是否来自正态分布。 我的结果反复是1,这意味着这些数字不是正态分布的。 我想要一个函数f(x) ,当应用于我的噪声函数的值列表时,结果看起来是均匀分布的。 我希望这个函数可以在C#中实现,而不需要花费几分钟来运行。 再一次,数字的来源无关紧要(问题在于将一个分布转换为另一个分布,特别是正常的分布转换为统一分布)。 不过,我的噪音function实现基于此和此 。 您可以在此处找到上述值数组。

NSubstitute模拟扩展方法

我想做模拟扩展方法,但它不起作用。 如何才能做到这一点? public static class RandomExtensions { public static IEnumerable NextInt32s(this System.Random random, int neededValuesNumber, int minInclusive, int maxExclusive) { // … } } [Fact] public void Select() { var randomizer = Substitute.For(); randomizer.NextInt32s(3, 1, 10).Returns(new int[] { 1, 2, 3 }); }

我怎样才能改进这种C#随机方法?

我认为我已经确定这是用于随机化列表的最简单且可unit testing的方法,但是有兴趣听到任何改进。 public static IList RandomiseList(IList list, int seed) { Random random = new Random(seed); List takeFrom = new List(list); List ret = new List(takeFrom.Count); while (takeFrom.Count > 0) { int pos = random.Next(0, takeFrom.Count – 1); T item = takeFrom[pos]; takeFrom.RemoveAt(pos); ret.Add(item); } return ret; }

Random()。Next()流需要多长时间才能重复?

考虑.NET Random流: var r = new Random(); while (true) { r.Next(); } 重复需要多长时间?

有没有办法获取System.Random的实际状态?

我希望能够获得实际的状态或种子或System.Random的任何内容,以便我可以关闭一个应用程序,当用户重新启动它时,它只是将其“重新安置”它与存储的一个并继续,就像它从未关闭。 可能吗? 使用Jon的想法,我想出来测试它; static void Main(string[] args) { var obj = new Random(); IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(“c:\\test.txt”, FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, obj); stream.Close(); for (var i = 0; i < 10; i++) Console.WriteLine(obj.Next().ToString()); Console.WriteLine(); formatter = new BinaryFormatter(); stream = new FileStream("c:\\test.txt", FileMode.Open, FileAccess.Read, FileShare.Read); obj = (Random)formatter.Deserialize(stream); stream.Close(); […]

生成随机布尔概率

我只知道如何生成随机布尔值(true / false)。 默认概率为50:50 但是,如何以自己的概率生成真正的假值? 假设它以40:60或20:80等概率返回true …