C#在一段数字区间内随机生成若干个互不相同的随机数

/// <summary>
        /// Random ra=new Random();  系统自动选取当前时前作随机种子:
        /// Random ra=new Random(6) 指定一个int型的参数作为随机种子;
        /// ra.Next(); 返回一个大于或等于零而小于2,147,483,647的随机数
        /// ra.Next(20);返回一个大于或等于零而小于20的随机数
        /// ra.Next(1,20); 返回一个大于或等于1而小于20之间的随机数
        /// 以下函数返回几个大于或等于某正整数(含0)而小于等于某正整数无重复的正整数.

/// 示例 int[] a= getRandomNum(12,1,100); //在1-100间随机取12个不同的数并存于数组a
        /// 来自 俱会一处 
        /// </summary>

public int[] getRandomNum(int num, int minValue, int maxValue)
        {
            if ((maxValue + 1 - minValue - num<0))
                maxValue += num - (maxValue + 1 - minValue);
            Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
            int[] arrNum = new int[num];
            int tmp = 0;
            StringBuilder sb=new StringBuilder (num *maxValue .ToString ().Trim ().Length );
              
            for (int i = 0; i <= num - 1; i++)
            {
                tmp = ra.Next(minValue, maxValue); 
                while (sb.ToString().Contains("#" + tmp.ToString().Trim() + "#"))
                    tmp = ra.Next(minValue, maxValue+1);
                arrNum[i] = tmp; 
                sb.Append( "#" + tmp.ToString().Trim() + "#");
            }
            return arrNum;
        }

时间: 2024-10-31 10:17:56

C#在一段数字区间内随机生成若干个互不相同的随机数的相关文章

在一个范围内随机生成指定个数的不重复随机数

public static void setRandom(int min, int max, int n, HashSet<Integer> set) { Random random = new Random(); for (int i = 0; i < n; i++) { int ranInt = random.nextInt(max - min + 1); if(!set.add(ranInt)){ i--; } } }

转:在0~N(不包括N)范围内随机生成一个长度为M(M &lt;= N)且内容不重复的数组

1. 最朴素暴力的做法. void cal1() { int i = 0, j = 0, num = 0; int result[M]; result[0] = rand() % N; //第一个肯定不重复, 直接加进去 for (i = 1; i < M; i++) //获得剩下的(M-1)个随机数 { num = rand() % N; //生成0 ~ N之间的随机数字 for (j = 0; j < i; j++) { if (num == result[j]) //如果和result数

python随机产生4个互不相等的随机数

从0-9中随机产生4个互不相等的数, 方法一: import random s=[] while(len(s)<4): x=random.randint(0,9) if x not in s: s.append(x) print(s) 方法二: import random result=[] x=range(10) for i in range(4): t=random.randint(i,9) temp=x[i] x[i]=x[t] x[t]=temp result.append(x[i])

场景上一个任意三角形,用程序画出任意一个顶点所在的高,三角形由程序在某一个范围内随机生成

解析: 1.题目解析:已知三角形三个顶点的坐标例如A(x1,y1),B(x2,y2),C(x3,y3),画出任意一个顶点的高线,所有必须求出高另一个点(这里我们叫H点)的坐标,然后两个点连成线. 2.逻辑解析:要计算出高线的垂直点的坐标必须用一个方程组. 3.原理解析:根据数学里面的知识,已知两个顶点(例如B.C)的坐标,即可计算出这两个点连成线的直线方程 y = kx + b:其中 k 指的是直线方程中的斜率,b是一个未知常数,因为知道B.C两点的坐标,所以可以计算出直线BC的直线方程, 那么

【转载】随机生成k个范围为1-n的随机数,其中有多少个不同的随机数?

来源:http://www.cnblogs.com/haolujun/archive/2012/11/11/2765102.html 假如现在让你随机生成k个范围在1-n内的随机数,那么你能得到多少个不同的随机数呢?刚开始想得时候,我认为当k<=n时,可以得到k个不同的随机数,但是显然这个想法错了.做了个实验在1-1024内随机生成500个数,其中只有394个不同的数,随机生成1000个数,其中有639个不同的数. 接下来是很枯燥的数学推导,如果你只是想看看最后的公式,那么就看倒数第二行.如果你

计算数值区间内某个数字出现的次数

计算数值区间内某个数字 9 出现的次数 1 程序的实现 2 功能测试 3 程序的优化 4 添加调试代码 ·············· 1 程序的实现 vim 9.c gcc 9.c ./a.out 图片太大,把显示的列数修改为10. 2 功能测试 测试一个数字内部的 9 能不能准确测定. 修改: min = 9938; max = 9939; ...... ./a.out Display num:9 in 9938 and 9939. There are. |   9938   9939 Fro

给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。 比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。

给出一个区间[a, b],计算区间内"神奇数"的个数.神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数.比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数.同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数. 输入描述: 输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000). 输出描述: 输出为一个整数,表示区间内满足条件的整数个数 输入例子: 11 20 输出例子: 6 1 #in

java定时器Timer,TimerTask每隔一段时间随机生成数字

1:java.util.Timer类是一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行. 2:TimerTask类是由 Timer 安排为一次执行或重复执行的任务,因为有TimerTask类是一个抽象类,必须有其子类对其实现来完成定时任务的功能. TimerCallClient .java客户端代码: Timercallclient.java代码   package com.skyon.gd.test; import java.util.Timer; /**

NYOJ 1068 ST(线段树之 成段更新+区间求和)

ST 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 "麻雀"lengdan用随机数生成了后台数据,但是笨笨的他被妹纸的问题给难住了... 已知lengdan生成了N(1=<N<=10005)个随机整数,妹子对这些数可能有以下几种操作或询问: 1,A a b c 表示给区间a到b内每个数都加上c: 2,S a b  表示输出区间a到b内的和: 3,Q a b 表示区间a到b内的奇数的个数: 为了使妹纸不口渴,所以我们决定妹纸的询问次数少一点,即