首页 / C#开发 / 正文

.NET[C#]生成指定区间内的惟一(不重复)的随机数字

5653 发布于: 2017-12-28 读完约需4分钟

方式一

private static readonly Random random = new Random(); 
private static readonly object syncLock = new object(); 
public static int RandomNumber(int min, int max)
{
    lock(syncLock) { // synchronize
        return random.Next(min, max);
    }
}

方式二

public static class StaticRandom
{
    private static int seed;

    private static ThreadLocal<Random> threadLocal = new ThreadLocal<Random>
        (() => new Random(Interlocked.Increment(ref seed)));

    static StaticRandom()
    {
        seed = Environment.TickCount;
    }

    public static Random Instance { get { return threadLocal.Value; } }
}

调用方式:StaticRandom.Instance.Next(1, 100);

方式三

public class RandomNumber : IRandomNumber
{
    private static readonly Random Global = new Random();
    [ThreadStatic] 
    private static Random _local;

    public int Next(int max)
    {
        var localBuffer = _local;
        if (localBuffer == null) 
        {
            int seed;
            lock(Global) seed = Global.Next();
            localBuffer = new Random(seed);
            _local = localBuffer;
        }
        return localBuffer.Next(max);
    }
}

方式四

namespace mySpace
{
    public static class Util
    {
        private static rnd = new Random();
        public static int GetRandom()
        {
            return rnd.Next();
        }
    }
}

调用方式: var i = Util.GetRandom();

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: 使用Bootstrap 3 实现div居中对齐布局

下一篇: jQuery在动态生成的DOM元素上绑定Event事件

本文永久链接码友网 » .NET[C#]生成指定区间内的惟一(不重复)的随机数字

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册