产生不重复随机数

代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h >
//产生四个(不同)随机数  保存到数组  输出  
int main(){
    int array[4] = {};
    
    srand(time(NULL));
    
    //生成数组 
    //产生随机数的同时比较是否重复
    //重复重新生成,不重复保存
    //每次i的值正好可以用来判断已经存在了几个 

    for(int i = 0; i < 4; i++){
        int temp = rand() % 4;
        
        if(i == 0){//第一个直接保存 
            array[i] = temp;
        } else{
            //判断前面是否已经存在
            int j = 0;
            for(; j < i; j++){
                //比较j对应的值和temp是否相同
                if(array[j] == temp){
                    //重复了
                    break; 
                } 
            } 
            //判断是怎么出来的
            if(j == i){
                //将i前面的比较一遍都没重复
                //保存temp值
                array[i] = temp; 
            } else{
                //重复了
                //重新回到当前这一次
                i--; 
            }
            
        }
        
    } 
    //输出 
    //数组中元素不能同时访问 
    for(int i = 0; i < 4; i++){
        printf("%d  ",array[i]); 
    } 
    
    return 0;
}

注意点:

1、定义数组之后需要初始化

2、不重复需要与前面的数字比较,数字相同时重新生成

3、在i++的循环中,为了避免跳过该次循环,i--

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容