新手的纠结
我想生成1个无重复位的4位随机数,首位可以为0,但是想了几种方法,都觉得有问题
1.用for循环生成全部,再随机选一个 代码倒是简单,但是要用到4个for语句共计1万次循环,并且得出来的是一个10选4个全排列 也就是5040个数据的数组。除非把这个写入文件,以后就不用生成了。但是自己是C++初学者。。还没有熟悉文件的那些操作,比如随机读取某个位置的数,完全不会呀。
2.先随机生成4个数字,如果有相同的就再生成一次,直到不同。。这个我试了,但是问题也来了,srand 和rand 如果用时间做参数的话,几乎要大概3秒(我的机子)才能完成。
int k;
int j[4];
do {
for(k=0;k<=3;k++)
{
srand((int)time(0));
j[k]=rand()%10;
}
} while ((a[0]==a[1]) || (a[0]==a[2]) || (a[0]==a[3]) || (a[1]==a[2]) || (a[1]==a[3]) || (a[2]==a[3]));
3.使用一个0-9的数组,每次随机选一个,然后把这个复制到另一个数组上,然后从原数组删除。但是又遇到麻烦的问题。。数组怎么删除后再让他连续。。。然后我就想到了链表,循环链表貌似更好一些,那样就不用每次去减少随机数的范围了。现在还再努力看链表相关的知识,但是还没法完成这个程序。
谁有更好的想法,请指教!
额,现在我没编译器那些,不能验证我的一个问题,就是
void test()
{break;} //或者是exit(0)
int main()
{
while(true)
{test()};
};
test()中的break ; exit(0)能否起作用?为什么?
谢谢大家指点!
[解决办法]
void test()
{break;}
void型 里面不能break;
[解决办法]