C#产生永不重复的随机数

muyebo 2010-08-09 11:32:22
我需要不定时的产生一些随机数到数据库,
有什么办法保证每次运行程序产生的一批随机数都是不同的?
...全文
8071 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
武穆逸仙 2010-08-10
  • 打赏
  • 举报
回复
Guid.NewGuid()

怎么用啊
马老虎 2010-08-09
  • 打赏
  • 举报
回复
产生当前时间:2010080912301122
DateTime
sxiaohui8709253 2010-08-09
  • 打赏
  • 举报
回复
数字的话 DateTime.Now.Ticks.ToString()+一个不重复随机的random数字
应该也可以
guid也可以
xrongzhen 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 muyebo 的回复:]
我需要不定时的产生一些随机数到数据库,
有什么办法保证每次运行程序产生的一批随机数都是不同的?
[/Quote]

是指一批中的每个字符都不相同吗?
如果是的话,从 源字符串 中去掉已存在的字符,然后再调用用Random
lingbinbin 2010-08-09
  • 打赏
  • 举报
回复
public static Random ran = new Random();
V-Far 2010-08-09
  • 打赏
  • 举报
回复
呃.如果一定要数字就考虑#3的.不一定纯是要求得到个不重复的就用guid吧.方便
wisdonlz 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
C# code

int[] index = new int[15];
  for (int i = 0; i < 15; i++)
    index = i;
  Random r = new Random();
  //用来保存随机生成的不重复的10个数
  int[] result = new int[10];
  int site = 15;//设置下限
  int i……
[/Quote]

这个可行,如果你想让数据库这列的数据都不一样,那就要判断了
cyljay 2010-08-09
  • 打赏
  • 举报
回复
guid
sywcf 2010-08-09
  • 打赏
  • 举报
回复
收藏学习
kiaoqq2010 2010-08-09
  • 打赏
  • 举报
回复
不重复就行了么? 根据时间做字符串换成数字,精确到毫秒。
End 2010-08-09
  • 打赏
  • 举报
回复
最简单的办法就是guid 如果你要用数字的话 那就有点小麻烦了
q107770540 2010-08-09
  • 打赏
  • 举报
回复

int[] index = new int[15];
  for (int i = 0; i < 15; i++)
    index = i;
  Random r = new Random();
  //用来保存随机生成的不重复的10个数
  int[] result = new int[10];
  int site = 15;//设置下限
  int id;
  for (int j = 0; j < 10; j++)
  {
    id = r.Next(1, site - 1);
    //在随机位置取出一个数,保存到结果数组
    result[j] = index[id];
    //最后一个数复制到当前位置
    index[id] = index[site - 1];
    //位置的下限减少一
    site--;
  }

  方法2:利用Hashtable。
  Hashtable hashtable = new Hashtable();
  Random rm = new Random();
  int RmNum = 10;
  for (int i = 0; hashtable.Count < RmNum; i++)
  {
   int nValue = rm.Next(100);
   if (!hashtable.ContainsValue(nValue) && nValue != 0)
   {
   hashtable.Add(nValue, nValue);
   Console.WriteLine(nValue.ToString());
   }
  }
  方法3:递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。
  Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
  int[] arrNum=new int[10];
  int tmp=0;
  int minValue=1;
  int maxValue=10;
  for (int i=0;i<10;i++)
  {
    tmp=ra.Next(minValue,maxValue); //随机取数
    arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中
  }
  .........
  .........
  public int getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)
  {
    int n=0;
    while (n<=arrNum.Length-1)
    {
      if (arrNum[n]==tmp) //利用循环判断是否有重复
      {
        tmp=ra.Next(minValue,maxValue); //重新随机获取。
        getNum(arrNum,tmp,minValue,maxValue,ra);//递归:如果取出来的数字和已取得的数字有重复就重新随机获取。
      }
    n++;
    }
    return tmp;
  }

symbol_bc 2010-08-09
  • 打赏
  • 举报
回复
对,呵呵,guid
leejelen 2010-08-09
  • 打赏
  • 举报
回复
Guid.NewGuid() 哈哈
mydear303 2010-08-09
  • 打赏
  • 举报
回复
GUID最好
jianuMan 2010-08-09
  • 打赏
  • 举报
回复
生成guid 或者 生成一个判断 再插入
huhuapop 2010-08-09
  • 打赏
  • 举报
回复
随机然后判断和原来的是否相同。相同的话,再取一次
hu_86727515 2010-08-09
  • 打赏
  • 举报
回复
Guid.NewGuid();
iseebaby 2010-08-09
  • 打赏
  • 举报
回复
Guid.NewGuid()
iseebaby 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 muyebo 的回复:]
我需要不定时的产生一些随机数到数据库,
有什么办法保证每次运行程序产生的一批随机数都是不同的?
[/Quote]
真个很好用的哇
加载更多回复(9)

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧