Я сделал такой эксперимент - сделал 10 миллионов случайных чисел из C и С#. А затем подсчитали, сколько раз каждый бит из 15 бит в случайном целое установлен. (Я выбрал 15 бит, потому что C поддерживает случайное целое число только до 0x7fff).
У меня есть это:

У меня есть два вопроса:
-  
Почему существует 3 наиболее вероятных бита? В
Cнаиболее вероятны биты бит8,10,12. А также вC#бит6,8,11наиболее вероятны. -  
Также кажется, что наиболее вероятные биты С# в основном сдвинуты на 2 позиции, а затем сравниваются с наиболее вероятными битами C. Почему это? Потому что С# использует другую константу RAND_MAX или что?
 
Мой тестовый код для
C:
void accumulateResults(int random, int bitSet[15]) {
    int i;
    int isBitSet;
    for (i=0; i < 15; i++) {
        isBitSet = ((random & (1<<i)) != 0);
        bitSet[i] += isBitSet;
    }
}
int main() {
    int i;
    int bitSet[15] = {0};
    int times = 10000000;
    srand(0);
    for (i=0; i < times; i++) {
        accumulateResults(rand(), bitSet);
    }
    for (i=0; i < 15; i++) {
        printf("%d : %d\n", i , bitSet[i]);
    }
    system("pause");
    return 0;
}
И тестовый код для C#:
static void accumulateResults(int random, int[] bitSet)
{
    int i;
    int isBitSet;
    for (i = 0; i < 15; i++)
    {
        isBitSet = ((random & (1 << i)) != 0) ? 1 : 0;
        bitSet[i] += isBitSet;
    }
}
static void Main(string[] args)
{
    int i;
    int[] bitSet = new int[15];
    int times = 10000000;
    Random r = new Random();
    for (i = 0; i < times; i++)
    {
        accumulateResults(r.Next(), bitSet);
    }
    for (i = 0; i < 15; i++)
    {
        Console.WriteLine("{0} : {1}", i, bitSet[i]);
    }
    Console.ReadKey();
}
Очень спасибо! Btw, OS - это Windows 7, 64-битная архитектура и Visual Studio 2010.
 ИЗМЕНИТЬ 
Очень спасибо @David Heffernan. Здесь я сделал несколько ошибок:
- Семя в программах на C и C было другим (C использовал нуль и С# - текущее время).
 -  Я не пытался экспериментировать с различными значениями переменной 
Timesдля исследования воспроизводимости результатов. 
Вот что я получил, когда проанализировал, как устанавливается вероятность того, что первый бит установлен, зависит от количества раз, когда был вызван случайный():

 Так как многие заметили - результаты не воспроизводятся и не должны восприниматься всерьез.
(За исключением некоторой формы подтверждения того, что C/С# PRNG достаточно хороши:-)).

