你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

随机数生成算法

2021/12/18 12:07:23

随机数生成算法

在这里插入代码片
class Random {
    int seed = time(NULL);
public:
    /**
     *
     * @return 随机整数,范围在0~Int之内
     */
    int randomInt() {
        int randNumber;
        srand(seed);
        randNumber = (int) (((double) rand() / RAND_MAX) * INT_MAX);
        seed = (seed + (int) (sqrt(seed) * sqrt(randNumber))) % (INT_MAX / 2);
        if (randNumber == 0) {
            seed = (int) (seed * 1.0001) % (INT_MAX / 2);
        }
//        if(seed == randNumber){
//            seed = (seed % (int)sqrt(INT_MAX))*(seed % (int)sqrt(INT_MAX));
//        } else{
//            seed = randNumber;
//        }
        return randNumber;
    }

    /**
     *
     * @param min 最小值边界
     * @param max 最大值边界
     * @return 返回一个指定范围内的随机数
     */
    int randomInt(int min, int max) {
        if (max < min) {
            cout << "sb" << endl;
            return -1;
        }
        int randNumber;
        srand(seed);
        randNumber = (int) (((double) rand() / RAND_MAX) * INT_MAX);
        seed = (seed + (int) (sqrt(seed) * sqrt(randNumber))) % (INT_MAX / 2);
        if (randNumber == 0) {
            seed = (int) (seed * 1.0001) % (INT_MAX / 2);
        }
        return randNumber % (max - min) + min;

    }
};

该算法避免了生成随机数的时候大量重复,范围在10w以内重复率可接受,我能接受,你不一定,如果有好的修改意见可以在评论区回复,谢谢带佬!