【Unity&C#&随机数】如何产生连续不重复的随机数
2017-03-24 23:44
411 查看
有几种思路,主要是打乱 顺序。
1.打乱 随机数的随机数数组 每个顺序的数组的
参考资料1里面,可以考虑先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,...),将该位置的数与最后一个位置的数对调就可以了。
产生的是 连续不重复的随机数数组
把参考资料1 里面的函数改了一下,能够 随机 连续且不重复的随机数
点击一下就,随机一次,并在后面显示点击的次数
如何在 一个不连续的数组 里面取随机数
参考资料:
1.
6.
1.打乱 随机数的随机数数组 每个顺序的数组的
参考资料1里面,可以考虑先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,...),将该位置的数与最后一个位置的数对调就可以了。
产生的是 连续不重复的随机数数组
把参考资料1 里面的函数改了一下,能够 随机 连续且不重复的随机数
int frame = 0; void Update() { if (Input.anyKeyDown) { ss(1, 10); frame++; } } void ss(int min,int max) { int rang = max - min; int[] arr = new int[rang +1]; int i; //初始化数组 for(i=0;i<= rang; i++) { arr[i] = max < min + i ? max : min + i ; } //随机数 for (int j = rang; j >= 0; j--) { int address = Random.Range(0, j);//获得一个 第 随机数address 的数组的序号 int tmp = arr[address]; arr[address] = arr[j];//调换位置 arr[j] = tmp; } //输出 foreach (int k in arr) { print(k+" "+ frame); } }
点击一下就,随机一次,并在后面显示点击的次数
如何在 一个不连续的数组 里面取随机数
int frame = 0; int[] array = { 1,2,3}; void Update() { if (Input.anyKeyDown) { ss(array); frame++; } } void ss(int[] array_int) { //随机数 for (int j = array_int.Length -1; j >= 0; j--) { int address = Random.Range(0, j);//获得一个 第 随机数address 的数组的序号 int tmp = array_int[address]; array_int[address] = array_int[j];//调换位置 array_int[j] = tmp; } //输出 foreach (int k in array_int) { print(k + " " + frame); } }//
参考资料:
1.
Unity3D中不重复随机数数组
2.有关Random.Next(C#)
3.不重复随机数列生成算法
4.生产N个不重复的随机数(从一个数组中随机取N个元素)
5.6.
相关文章推荐
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 算法:如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 使用VS2005 C#编写随机数Random算法的代码(适用于连续产生随机数,重置后不适用)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- C# 循环产生多个随机数重复问题
- c# Random快速连续产生相同随机数的解决方案
- C#产生无重复随机数
- C#的解题思路(1):不重复随机数的产生问题 .
- C#怎样避免产生的随机数是重复的呢?
- C#产生不重复的随机数并生成随机文件名
- C#的解题思路(1):不重复随机数的产生问题
- C# 不重复随机数的产生问题
- c# Random快速连续产生相同随机数的解决方案
- C# 产生不重复的随机数
- C#的解题思路(1):不重复随机数的产生问题
- C#的解题思路(1):不重复随机数的产生问题
- C#产生不重复的随机数