int generate01(int (*func)()) { if (func == NULL) return -1; int num1 = -1; int num2 = -1; int ret = -1; while(num1 != num2){ num1 = func(); num2 = func(); if (num1 == 1 && num2 == 0) { ret = 1; break; } else if (num1 == 0 && num2 == 1) { ret = 0; break; } } return ret;}
int generateRandomNum(int max) { if (max < 1) { return -1; } int bit_num = 0, i = 0; int result = 0; while((0x01 << bit_num) < max) ++bit_num; //while(result > n) { while(bit_num > i) { if (generate01()) result |= 0x01 <<bit_num; //result |= 0x01<<i i++; } i = 0; // } return result;}
int generateRandom(int n) {
if (n < 1)
return -1;
unsigned long long result = 0;
for (int i = 0; i < n; i++) {
result += rand5();
}
result /= 5;
return result;
}
void generatePoint(double*x, double *y, int r){ int base = 10000; while (pow(*x, 2) + pow(*y, 2) > pow(r, 2)) { *x = random() % 10000; *y = random() % 10000; *x = (2 * r / (*x)) - r; *y = (2 * r / (*y)) - r; }}
int impounding_reservoir(int *array,int length, int k) { if (k <= 0 || array == NULL || length <= 0 || k > length) { return 0; } int result[k]; int i = 0, j = 0; srand((unsigned) time(NULL)); for (i = 0; i < k; i++) { result[i] = array[i]; } for (i = k; i < length; i++) { j = random() % length; if(j < k) result[j] = array[i]; } for (i = 0; i < k; i++) printf("%d ", result[i]); printf("\n"); return k;}
int * generateRandom(int *array, int num, int start, int end)
{
int size = end / 32 + end % 32 > 0 ? 1: 0;
int tmp_arr[size] = {0};
int index = 1, count = 0;
srand(time(NULL));
while(count < num){
index += rand() ;
index %= 400 + 1;
if (test_bit(tmp_arr, index)) {
continue;
} else {
set_bit(tmp_arr, index);
array[count] = index;
index = 1;
count++;
}
}
return array;
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158929.html原文链接:https://javaforall.cn