• 在指定范围内将随机字节整数

  • 本文关于 c#,.net,数组arrays,随机random,projection
  • CodeGo.net > 在指定范围内将随机字节整数
  •  

    在指定范围内将随机字节整数



    c# .net 数组arrays 随机random projection
    我试图写一个函数的默认RandomNumberGenerator到一个指定的范围内产生Int32值。
    void GenerateRandom (int [] data, int minInclusive, int maxExclusive)
    {
     int size = 0;
     int length = 0;
     byte [] bytes = null;
     size = (int) Math.Ceiling(Math.Log(Math.Abs(maxExclusive - minInclusive), 2));
     length = data.Length * size;
     var bytes = new byte [length];
     using (RandomNumberGenerator generator = RandomNumberGenerator.Create())
     {
      generator.GetBytes(bytes);
     }
     // How to effectively convert this `byte []` to an `int []` within the specified range?
    }
    
    一个尝试是产生长度的随机字节数组(data.Length * ((int) Math.Ceiling(Math.Log(Math.Abs(maxExclusive - minInclusive), 2))))字节为int的每x个。不论特定的范围内,当然这种方法具有朝向较大的值的巨大偏差的缺点,因为存在多个最显著字节为零机会不大。 任何输入将不胜感激。虽然我'。net这里,平台/语言并不重要。寻找一个概念上的提示。 请注意,我已经熟悉了Random类。NET中,但我只关心搞清楚如何同时能够在RandomNumberGenerator手动执行此操作。
    本文地址 :CodeGo.net/1106251/
    -------------------------------------------------------------------------------------------------------------------------
    1.
    unsafe static int[] GenerateRandom(int length, int minInclusive, int maxExclusive)
    {
     var bytes = new byte[length * 4];
     var ints = new int[length];
     var ratio = uint.MaxValue / (double)(maxExclusive - minInclusive);
     using (RandomNumberGenerator generator = RandomNumberGenerator.Create())
     {
      generator.GetBytes(bytes);
      fixed(byte* b = bytes)
      {
       uint* i = (uint*)b;
       for(int j = 0; j < length; j++, i++)
       {
        ints[j] = minInclusive + (int)(*i / ratio);
       }
      }
     }
     return ints;
    }
    
    我碰到一个小测试:
    var ints = GenerateRandom(1000000, 0, 300);
    var groups = ints.GroupBy(x => x).Select(g => new { value = g.Key, count = g.Count() });
    var hist = Enumerable.Range(0, 300).Join(groups, x => x, g => g.value, (x, g) => new { value = x, count = g.count }).ToList();
    var max = hist.OrderByDescending(x => x.value).First();
    var min = hist.First();
    
    而结果是相当随机的所有数字之间0300min.count = 3301max.count = 3358
    本文标题 :在指定范围内将随机字节整数
    本文地址 :CodeGo.net/1106251/
    1. 问在程序运行时是否可以直接对comboBox.TEXT赋值?
    2. ListBox项消失
    3. 连接数据库提示:sql server不存在或拒绝访问
    4. 如何将名称/值对传递到XML?
    5. 关于类文件里面调用Session.
    6. 哪里是C#的出口steema的TeeChart模式对话框窗口的WPF
    7. 帮这句SQL语句!
    8. NHibernate的加入到临时表
    9. DevExpress.XtraGrid 我有 数量价格汇总三个字段,现在我想要在改数量价格时自动计算出汇总,问那个事件比较好?
    10. 控制器提供一切管窥

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻