范围随机算法实现

C++
cpp
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
int randomRange(int min, int max) {
int range = max - min + 1;
return rand() % range + min;
}
int main() {
srand(time(nullptr));
std::set<int> seen;
std::vector<int> generated;
int count = 0;
std::cout << "生成的随机数序列:" << std::endl;
while (seen.size() < 10) {
int num = randomRange(1, 10);
std::cout << num << " ";
generated.push_back(num);
seen.insert(num);
count++;
}
std::cout << std::endl;
// 排序
std::sort(generated.begin(), generated.end());
std::cout << "排序后的随机数序列:" << std::endl;
for (int num : generated) {
std::cout << num << " ";
}
std::cout << std::endl;
std::cout << "所有数字 1~10 都已出现,共生成了 " << count << " 个随机数。" << std::endl;
return 0;
}
JavaScript(ECMAScript)
lua
function randomRange(min, max) {
const range = max - min + 1;
return Math.floor(Math.random() * range) + min;
}
const seen = new Set();
const generated = [];
let count = 0;
while (seen.size < 10) {
const num = randomRange(1, 10);
generated.push(num);
seen.add(num);
count++;
}
console.log("生成的随机数序列:", generated.join(" "));
generated.sort((a, b) => a - b);
console.log("排序后的随机数序列:", generated.join(" "));
console.log(`所有数字 1~10 都已出现,共生成了 ${count} 个随机数。`);
Lua
lua
-- 使用 math.random() 返回 [0,1) 浮点数,映射到 [min, max] 整数
function randomRange(min, max)
local range = max - min + 1
return math.floor(math.random() * range) + min
end
math.randomseed(os.time())
local seen = {}
local countSeen = 0
local generated = {}
local totalGenerated = 0
print("生成的随机数序列:")
while countSeen < 10 do
local num = randomRange(1, 10)
io.write(num .. " ")
table.insert(generated, num)
if not seen[num] then
seen[num] = true
countSeen = countSeen + 1
end
totalGenerated = totalGenerated + 1
end
print()
-- 排序
table.sort(generated)
print("排序后的随机数序列:")
for i, v in ipairs(generated) do
io.write(v .. " ")
end
print()
print(string.format("所有数字 1~10 都已出现,共生成了 %d 个随机数。", totalGenerated))