24,860
社区成员




379: /*************** Random number generation *******************/
380:
381: typedef uint64 CvRNG;
382:
383: #define CV_RNG_COEFF 4164903690U
384:
385: CV_INLINE CvRNG cvRNG( int64 seed CV_DEFAULT(-1))
386: {
387: CvRNG rng = seed ? (uint64)seed : (uint64)(int64)-1;
388: return rng;
389: }
390:
391: /* Return random 32-bit unsigned integer: */
392: CV_INLINE unsigned cvRandInt( CvRNG* rng )
393: {
394: uint64 temp = *rng;
395: temp = (uint64)(unsigned)temp*CV_RNG_COEFF + (temp >> 32);
396: *rng = temp;
397: return (unsigned)temp;
398: }
399:
400: /* Returns random floating-point number between 0 and 1: */
401: CV_INLINE double cvRandReal( CvRNG* rng )
402: {
403: return cvRandInt(rng)*2.3283064365386962890625e-10 /* 2^-32 */;
404: }
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
unsigned long ulrand(void) {
return (
(((unsigned long)rand()<<24)&0xFF000000ul)
|(((unsigned long)rand()<<12)&0x00FFF000ul)
|(((unsigned long)rand() )&0x00000FFFul));
}
unsigned __int64 ullrand(void) {
return (
(((unsigned __int64)ulrand())<<32)
| ((unsigned __int64)ulrand()));
}
int i;
unsigned long ul;
unsigned __int64 ull;
void main() {
srand(time(NULL));
for (i=0;i<10;i++) {
ul=ulrand();
printf("%010lu 0x%08x\n",ul,ul);
}
for (i=0;i<10;i++) {
ull=ullrand();
printf("%020I64u 0x%016I64x\n",ull,ull);
}
}
//3971076432 0xecb1d150
//2433428051 0x910b2a53
//1415415336 0x545d8628
//1312330759 0x4e389407
//1845758378 0x6e0409aa
//0008069933 0x007b232d
//4202720757 0xfa806df5
//2669855255 0x9f22c217
//0312068736 0x1299ca80
//2084555989 0x7c3fccd5
//03502077880857307931 0x3099e1472040ab1b
//16884702393146816355 0xea52835e19b43763
//01877364819396611730 0x1a0dbd5b45f34e92
//07839440151924835771 0x6ccb4948756a05bb
//09471412086917299176 0x8371371c820bfbe8
//04411255971577469925 0x3d37edef2f321be5
//13735846279546091130 0xbe9f876a65b7367a
//04512980766520059820 0x3ea15418aa9927ac
//15821377118299441610 0xdb90d2a9f1bb49ca
//15512417228822200185 0xd7472d480398bf79