怎么控制 C++生成随机数的范围

我用#include<time.h>
srand((unsing)time(0))
a=rand()%33
这样可以控制随机数是在0-33范围内,可是我想让它在1-33范围内范围内,怎么办?
还有 a=rand()%33
b=rand()%33
怎么能让a和b产生的随机数不重复

大概就是这样:

rand()%//注意没有范围

高级一点的:(注意有头文件time.h)

int a
{
    srand((unsigned/*此处填随机种子,我选用时间*/)time(NULL));
    rand()%x/*x处填范围*/;
    }

代码运用:(注意还保存到文件里了)

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<iostream>
#define _CRT_SECURE_NO_WARNINGS
#include<math.h>
#include<string.h>
using namespace std;
int main()
{
int shu,xian;
int i;
int arr[100001];
MAIN:
printf("详细说明;此程序将绘制一个随机数表并保存至D盘一个位置,名称是随机数表。\n");
printf("输入随机数数量和上限(0`x)(用空格隔开):");
std::cin>>shu>>xian;
system("cls");
USING:
printf("打印?(1/2)\n");
char a=_getch();
if(a == '1')
{   system("cls");
   FILE* outFile=fopen("D:/随机数表+.txt","w");
   for(i=0;i<shu;i++)
   {
arr[i]=rand()%xian;
printf("%d_");arr[i];
fprintf(outFile,"%d-",arr[i]);
   }
fclose(outFile);
return 0;
}
   if(a == '2')
   {   
   system("cls");
   printf("\n关闭");
return 0;
}
else 
   {
    system("cls");
    goto USING;
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-25
a=ranf()%33+1
注意:你说“a=rand()%33
这样可以控制随机数是在0-33范围内”是错的,是0-32
让a和b产生的随机数不重复可以加条件判断
第2个回答  2009-03-25
a = rand()%33
a的范围是0~32
b = a+1;
b的范围是1~33

用if语句判断
如:
if(a == b)
continue;
第3个回答  推荐于2017-10-15
a=rand()%33+1;
do
{
a=rand()%33+1;
}while(b==a);本回答被提问者采纳
第4个回答  2009-03-25
a=rand()%32+1

1,do
{
a=rand()%33+1;
}while(b==a);
2,if(a == b)
continue;
3,switch(a)
{case b;cintiu;
}
相似回答