silverlight 2 Random 随机数解决方案

using System;
using System.Security.Cryptography;

    public class RNG
    {
        
private static RNGCryptoServiceProvider rngp = new RNGCryptoServiceProvider();
        
private static byte[] rb = new byte[4];

        
/// <summary>
        
/// 产生一个非负数的乱数
        
/// </summary>
        public static int Next()
        {
            rngp.GetBytes(rb);
            
int value = BitConverter.ToInt32(rb, 0);
            
if (value < 0) value = -value;
            
return value;
        }
        
/// <summary>
        
/// 产生一个非负数且最大值在 max 以下的乱数
        
/// </summary>
        
/// <param name="max">最大值</param>
        public static int Next(int max)
        {
            rngp.GetBytes(rb);
            
int value = BitConverter.ToInt32(rb, 0);
            value 
= value % (max + 1);
            
if (value < 0) value = -value;
            
return value;
        }
        
/// <summary>
        
/// 产生一个非负数且最小值在 min 以上最大值在 max 以下的乱数
        
/// </summary>
        
/// <param name="min">最小值</param>
        
/// <param name="max">最大值</param>
        public static int Next(int min, int max)
        {
            
int value = Next(max - min) + min;
            
return value;
        }

    }
posted @ 2008-06-17 01:21  王喆(nasa)  阅读(1654)  评论(3编辑  收藏  举报