void Not_same_randnum(int randnum,int n1,int n2) //randnum:需要产生多少个随机数 n1与n2:范围
{
int* a = new int[randnum] ;
//memset(a, 0, sizeof(a)); //memset函数只能给字符型数组用
fill(a, a + (randnum ), 0); //fill适用所有类型,给a的randnum个函数赋0值
for (int i = 0; i < randnum; i++)
{
a[i] = n1;
n1++;
}
srand(time(0)); //播下随机的种子,确保每次随机排序都不一样
random_shuffle(a,a+randnum); //用于打乱数组a的排序,randnum表示打乱的个数
for (int i = 0; i < randnum; i++)//下为控制输出格式的程序
{
if (i % 5 == 0)
{
printf("\n");
}
printf("%d ", a[i]);
if (How_mang_bits(a[i]) == 1)
{
printf(" ");
}
}
printf("\n");
}
思路:通过将复杂的不重复问题转为顺序数组排序来避免重复并实现随机
注意:之前经常用的memset函数发现只能给字符型数组用
fill函数:fill(起始位置,结束位置,填充的数)
random_shuffle函数:random_shuffle(起始位置,结束位置)