生成指定数量、指定范围内的随机数

1、min <= value < max   如: 0 <= val < 10
/**
	包含最小值 但不包含最大值 :取 min <= value < max   如: 0 <= val < 10

	解题关键: 
		min <= value  用 minV = min;
		value < max 用 range = max - min; 
		Math.floor(rand*range + minV);
*/
function randNum(min,max,num){
	var range = max - min;
 	var arr = [];
 	var minV = min; //实际上可以取的最小值
 	var tmp = "";
	for (var i = 0; i < num; i++) {
		var rand = Math.random(); //  rand >=0  && rand < 1

		// console.log(rand)
		tmp = Math.floor(rand*range + minV);
		arr.push(tmp)
	}
	return arr;
}


console.log(randNum(0,10,10))
console.log(randNum(1,10,10))

2、min < value =< max   如: 0 < val <= 10
/**
	包含最大值 :取 min < value =< max   如: 0 < val <= 10
	
	解题关键: 
		min < value 用 minV = min+1 ;  
		value <= max 用 range = max - min; 
		Math.floor(rand*range + minV);
*/
function randNum2(min,max,num){
	var range = max - min,
	 	minV = min +1, //实际上可以取的最小值
	 	arr = [],
	 	tmp = "";
	for (var i = 0; i < num; i++) {
		var rand = Math.random(); //  rand >=0  && rand < 1

		// console.log(rand)
		tmp = Math.floor(rand*range + minV);
		arr.push(tmp)
	}
	return arr;
}

console.log(randNum2(0,10,10))
console.log(randNum2(1,10,10))

3、min < value < max   如: 0 < val < 10
/**
	不包含最大值也不包含最小值 :取 min < value < max   如: 0 < val < 10

	解题关键: 
		min < value 用 minV = min+1 ;
		value < max 用 range = max - min - 1; 
		Math.floor(rand*range + minV);
*/
function randNum3(min,max,num){
	var range = max - min - 1,
	 	minV = min+1, //实际上可以取的最小值
	 	arr = [],
	 	tmp = "";
	for (var i = 0; i < num; i++) {
		var rand = Math.random(); //  rand >=0  && rand < 1

		// console.log(rand)
		tmp = Math.floor(rand*range + minV);
		arr.push(tmp)
	}
	return arr;
}

console.log(randNum3(0,10,10));
console.log(randNum3(1,10,10));

4、min <= value <= max   如: 0 <= val <= 10
/**
	包含最大值也包含最小值 :取 min <= value <= max   如: 0 <= val <= 10
	
	解题关键: 
		采用四舍五入Math.round(rand*range) + minV  (加上最小值)
*/
function randNum4(min,max,num){
	var range = max - min, 
 		minV = min, //实际上可以取的最小值
 		arr = [], //返回的数组
 		tmp = "";
	for (var i = 0; i < num; i++) {
		var rand = Math.random(); //  rand >=0  && rand < 1

		console.log(rand)
		tmp = Math.round(rand*range) + minV;
		arr.push(tmp)
	}
	return arr;
}

console.log(randNum4(0,10,10));
console.log(randNum4(1,10,10));
扩展: 生成指定数量、指定范围、不重复的随机数

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Qt提供的QRandomGenerator类来生成随机数,并使用QSet类来存储生成随机数,确保不会产生重复的随机数。以下是一个示例代码: ```c++ #include <QSet> #include <QRandomGenerator> QSet<int> generateRandomNumbers(int count, int minValue, int maxValue) { QSet<int> randomNumbers; QRandomGenerator randomGenerator; randomGenerator.seed(QDateTime::currentMSecsSinceEpoch()); // 设置随机数生成器的种子为当前时间 while (randomNumbers.count() < count) { int randomNumber = randomGenerator.bounded(minValue, maxValue + 1); // 生成[minValue, maxValue]范围内的随机整数 randomNumbers.insert(randomNumber); // 将随机数插入到集合中 } return randomNumbers; } ``` 使用示例: ```c++ QSet<int> randomNumbers = generateRandomNumbers(5, 1, 10); foreach(int number, randomNumbers) { qDebug() << number; } ``` 该函数将生成5个范围在1到10之间的不重复随机整数,并将其存储在QSet中返回。 ### 回答2: 在Qt中,可以使用QRandomGenerator类来生成随机数。要生成一组指定范围内的不重复随机数,可以借助QSet容器来实现。 首先,创建一个QSet对象,用于存储已生成随机数。然后,使用QRandomGenerator::global()->bounded()函数来生成一个随机数,并将其添加到QSet中。如果生成随机数已经存在于QSet中,则重新生成一个。重复这个步骤,直到生成指定数量的不重复随机数为止。 以下是一个示例代码: ```cpp #include <QRandomGenerator> #include <QSet> QSet<int> generateUniqueRandomNumbers(int min, int max, int count) { QSet<int> randomNumbers; while (randomNumbers.size() < count) { int randomNumber = QRandomGenerator::global()->bounded(min, max + 1); randomNumbers.insert(randomNumber); } return randomNumbers; } int main() { int min = 1; // 指定范围的最小值 int max = 100; // 指定范围的最大值 int count = 10; // 需要生成随机数数量 QSet<int> randomNumbers = generateUniqueRandomNumbers(min, max, count); for (int randomNumber : randomNumbers) { qDebug() << randomNumber; } return 0; } ``` 上述代码中,generateUniqueRandomNumbers()函数接受三个参数:指定范围的最小值、最大值和需要生成随机数数量。函数内部使用while循环不断生成随机数,并将其添加到QSet中,直到QSet的大小达到指定数量为止。最后,将生成随机数依次打印出来。 注意,需要在项目文件中添加QT += core以包含QtCore模块的头文件,并在代码中包含相关的头文件。此外,示例代码中使用了QDebug来输出随机数,因此还需添加QT += debug。 以上就是在Qt中随机产生一组指定范围内的不重复随机数的方法。 ### 回答3: 在Qt中,可以使用QRandomGenerator类来生成随机数。要生成一组指定范围内的不重复随机数,可以采用以下步骤: 1. 引入QRandomGenerator类:首先在代码中引入QRandomGenerator类,可以通过#include <QRandomGenerator>来实现。 2. 设置种子:使用QRandomGenerator类的global()静态成员函数来获取全局的QRandomGenerator对象。可以使用其seed()函数设置种子值,以保证每次运行生成随机数序列是不同的。 3. 生成随机数序列:可以使用QList或QSet容器来存储生成随机数。首先创建一个空的QList或QSet对象,用于存储随机数。然后使用QRandomGenerator类的bounded()函数生成指定范围内的随机数,并将其添加到QList或QSet中。 4. 检查重复:在每次生成随机数时,可以使用contains()函数来检查当前生成随机数是否已经存在于QList或QSet中,若不存在则将其添加到容器中。这样可以保证生成随机数不重复。 5. 生成指定数量随机数:根据需求,可以使用循环来重复步骤3和步骤4,直到生成指定数量随机数。 以下是一个示例代码,用于生成指定范围内的不重复随机数: ```cpp #include <QRandomGenerator> #include <QList> QList<int> generateRandomNumbers(int min, int max, int count) { QList<int> randomNumbers; QRandomGenerator* generator = QRandomGenerator::global(); generator->seed(QTime::currentTime().msec()); while (randomNumbers.count() < count) { int randomNumber = generator->bounded(min, max+1); if (!randomNumbers.contains(randomNumber)) randomNumbers.append(randomNumber); } return randomNumbers; } ``` 在上述示例代码中,generateRandomNumbers函数接收三个参数:最小值min、最大值max和要生成随机数数量count。函数返回一个QList<int>类型的随机数序列。 通过调用该函数,即可生成一组指定范围内的不重复随机数。例如: ```cpp int main(int argc, char *argv[]) { QList<int> randomNumbers = generateRandomNumbers(1, 10, 5); foreach (int randomNumber, randomNumbers) { qDebug() << randomNumber; } return 0; } ``` 上述代码生成了5个位于1到10之间的不重复随机数,并使用qDebug()函数输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值