It’s not just the first block of 4096 with empty bins. Blocks 3 and 11 have no numbers less than 0.5.
Using this code
printf("\n\nPATH_N %d, RAND_N %d, N_PER_RNG %d, MT_RNG_COUNT %d\n", PATH_N, RAND_N, N_PER_RNG, MT_RNG_COUNT);
float mean;
float var;
for(unsigned int k=0; k<N_PER_RNG; k++){
printf("block %d\n", k);
mean = 0;
var = 0;
getStats(h_RandGPU + k*MT_RNG_COUNT, MT_RNG_COUNT, &mean, &var);
printf("mean %1.4f, variance %1.4f\n", mean, var);
const unsigned int Nbins = 10;
int* bins = (int*)calloc(Nbins, sizeof(int));
for(unsigned int i=k*MT_RNG_COUNT; i<(k+1)*MT_RNG_COUNT; i++){
int bucket = (int) (h_RandGPU[i]*Nbins);
bins[bucket] += 1;
}
for(unsigned int i=0; i<Nbins; i++){
printf("%d ", bins[i]);
}
printf("\n\n");
free(bins);
}
getStats(h_RandGPU, RAND_N, &mean, &var);
printf("mean %1.4f, variance %1.4f\n", mean, var);
I get this
PATH_N 131072, RAND_N 131072, N_PER_RNG 32, MT_RNG_COUNT 4096
block 0
mean 0.1125, variance 0.0056
1889 1883 324 0 0 0 0 0 0 0
block 1
mean 0.4620, variance 0.0920
513 513 518 442 454 236 235 326 428 431
block 2
mean 0.4852, variance 0.0788
377 470 404 407 512 423 415 363 349 376
block 3
mean 0.6769, variance 0.0179
0 0 0 0 0 1916 130 1013 955 82
block 4
mean 0.5036, variance 0.0634
80 829 91 468 715 101 1118 42 302 350
block 5
mean 0.5572, variance 0.0795
40 911 8 501 292 0 1176 2 819 347
block 6
mean 0.4650, variance 0.0824
492 425 505 448 451 392 292 356 405 330
block 7
mean 0.5395, variance 0.0913
433 403 331 242 247 476 423 502 522 517
block 8
mean 0.4676, variance 0.0837
462 488 490 381 500 323 367 368 330 387
block 9
mean 0.4556, variance 0.0883
515 533 475 462 455 335 184 328 438 371
block 10
mean 0.5439, variance 0.0750
369 201 567 135 167 421 1014 529 211 482
block 11
mean 0.8077, variance 0.0169
0 0 0 0 0 43 1315 622 620 1496
block 12
mean 0.5410, variance 0.0837
424 270 356 329 277 477 492 522 493 456
block 13
mean 0.4602, variance 0.0818
516 444 447 487 427 383 342 372 369 309
block 14
mean 0.4629, variance 0.0466
341 373 246 320 472 1142 1014 44 40 104
block 15
mean 0.5224, variance 0.0886
375 437 384 361 369 342 437 424 435 532
block 16
mean 0.5098, variance 0.0784
393 305 380 487 414 478 417 399 434 389
block 17
mean 0.4888, variance 0.0578
110 713 356 215 350 950 651 339 227 185
block 18
mean 0.5144, variance 0.0873
105 40 1336 135 1041 25 2 531 49 832
block 19
mean 0.5089, variance 0.0646
205 485 359 434 413 230 1022 473 242 233
block 20
mean 0.5054, variance 0.0822
386 380 442 419 387 410 437 400 413 422
block 21
mean 0.4980, variance 0.0853
426 436 413 371 400 408 395 416 408 423
block 22
mean 0.5909, variance 0.0723
249 186 260 509 66 407 853 590 439 537
block 23
mean 0.6350, variance 0.0506
3 28 301 385 714 402 586 493 477 707
block 24
mean 0.4357, variance 0.0809
838 308 243 217 245 1142 426 183 246 248
block 25
mean 0.5012, variance 0.0838
403 412 415 420 394 399 386 442 403 422
block 26
mean 0.5061, variance 0.0848
400 426 380 391 410 418 421 387 412 451
block 27
mean 0.5041, variance 0.0821
424 355 419 424 376 431 421 414 459 373
block 28
mean 0.4938, variance 0.0820
435 387 394 441 425 442 381 391 435 365
block 29
mean 0.6008, variance 0.0768
258 249 248 248 221 591 512 666 376 727
block 30
mean 0.5051, variance 0.0835
407 402 400 403 369 446 403 431 430 405
block 31
mean 0.4917, variance 0.0910
504 543 367 233 254 510 461 325 526 373
mean 0.5110, variance 0.0828