找回密码
 立即注册
查看: 5067|回复: 89

[脚本] int类型数组中产生不重复的值(不重复随机数数组) c#

[复制链接]
发表于 2013-3-13 15:36 | 显示全部楼层 |阅读模式
本帖最后由 monery8 于 2013-3-13 15:37 编辑


1、C# 如何产生100以内不重复的随机数
可以考虑先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,...),将该位置的数与最后一个位置的数对调就可以了。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;

  4. namespace ConsoleApplication1
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. int [] arr=new int[101];
  11. int i;
  12. //初始化数组
  13. for(i=1;i<=100;i++)
  14. {
  15. arr<i> = i;
  16. }
  17. //随机数
  18. Random r = new Random();
  19. for (int j = 100; j >= 1; j--)
  20. {
  21. int address = r.Next(1,j);
  22. int tmp = arr[address];
  23. arr[address] = arr[j];
  24. arr[j] = tmp;
  25. }
  26. //输出
  27. foreach (int k in arr)
  28. {
  29. Console.Write(k+" ");
  30. }
  31. }
  32. }
  33. }</i>
复制代码

2、C#生成不重复随机数

  1. /// <summary>
  2.   /// 功能描述:返回不重复随机数数组
  3.    /// </summary>
  4.   /// <param name="Num">随机数个数</param>
  5.   /// <param name="minNum">随机数下限</param>
  6.   /// <param name="maxNum">随机数上限</param>
  7.   /// <returns></returns>
  8.   public int[] GetRandomArray(int Number,int minNum,int maxNum)
  9.   {
  10.    int j;
  11.    int[] b=new int[Number];
  12.    Random r=new Random();
  13.    for(j=0;j<Number;j++)
  14.    {
  15.     int i=r.Next(minNum,maxNum);
  16.     int num=0;
  17.     for(int k=0;k<j;k++)
  18.     {
  19.      if(b[k]==i)
  20.      {
  21.       num=num+1;
  22.      }
  23.     }
  24.     if(num==0 )
  25.     {
  26.      b[j]=i;
  27.     }
  28.     else
  29.     {
  30.      j=j-1;
  31.     }
  32.    }
  33.    return b;
  34.   }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2013-3-14 14:49 | 显示全部楼层

感谢楼主的无私分享!{:soso__11402694654016840197_7:}
发表于 2013-3-15 16:33 | 显示全部楼层
好强的逻辑,最怕这个了
发表于 2013-4-1 10:01 | 显示全部楼层
和洗牌算法一样
发表于 2013-4-26 21:26 | 显示全部楼层
就是乱序算法
发表于 2017-3-20 07:58 | 显示全部楼层
很不错
发表于 2017-3-20 07:03 | 显示全部楼层
顶顶多好
发表于 2017-3-20 07:50 | 显示全部楼层
真心顶
发表于 2017-3-20 07:48 | 显示全部楼层
不错不错
发表于 2017-3-20 07:34 | 显示全部楼层
LZ真是人才
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 18:56 , Processed in 0.172148 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表