zoukankan      html  css  js  c++  java
  • 生成特定区段的随机小数

    引子

    问题来自CSDN上的一个帖子,要求产生3.85~4.82之间的随机小数。思路相对简单,先生成随机整数,再除以100得到小数。

    借鉴了前人使用Guid生成随机数的经验,我使用LINQ,利用Guid.NewGuid()生成的随机数作为key、以385~482之间的整数为value,按照key进行排序,再将value组成的序列中的值,依次除以100取浮点值作为结果返回。

    示例代码

    public static void Main(string[] args)
    {
    IList<float> result = generaterandomfloat(385, 482);
    
        foreach (float v in result)
            Console.WriteLine("{0:0.00}", v);            
    
        Console.WriteLine("\nPress any key...");
        Console.ReadKey();
    }
    
    public static float[] generaterandomfloat(int start, int end)
    {
        System.Diagnostics.Debug.Assert(start < end);
    
        float[] result = Enumerable.Range(start, end - start + 1)
            .Select(x => new { key = Guid.NewGuid(), value = x })
            .OrderBy(o => o.key)
            .Select(h => ((float)h.value) / 100f)
            .ToArray();
    
        return result;
    }

    7月13日修正:


    把OrderBy()想复杂了,其实直接用Guid.NewGuid()即可。

    float[] result = Enumerable.Range(start, end - start + 1)                
        .OrderBy(o => Guid.NewGuid())
        .Select(x => ((float) x) / 100f)
        .ToArray();
  • 相关阅读:
    [1] Tornado Todo Day0
    [0] Tornado Todo 开篇
    RNSS和RDSS
    国密随机数检测--2/15 块内频数检测
    国密随机数检测--1/15 单比特频数检测
    FPGA实用通信协议之IIC
    压缩感知(十)
    压缩感知(九)
    压缩感知(八)
    压缩感知(七)
  • 原文地址:https://www.cnblogs.com/Abbey/p/2104668.html
Copyright © 2011-2022 走看看