2013-07-10 4 views
2

В реальной вероятности существует 0% вероятность того, что случайное число p, выбранное из всех действительных чисел в интервале (0,1), будет 0.5. Однако каковы же вероятности того, чтоВероятность генерации определенного случайного числа, например, в MATLAB

rand == 0.5 

в MATLAB? Я полагаю, это похоже на то, сколько чисел двойной точности находится между нулем и единицей, или, может быть, есть другие факторы.

+0

См.: [Сколько двойных чисел находится между 0.0 и 1.0?] (Http://stackoverflow.com/questions/2978930/). Однако, если я правильно помню, алгоритм Мерсенна Твистера вычисляет на основе [1,2], а затем сдвигает. – horchler

+0

Возможно, я ошибаюсь (не могу вспомнить давно), но я считаю, что вероятность того, что 'p' будет равна 0,5, фактически не определена, а не 0. При определении распределений над несчетными множествами, такими как реальная интервал, единственными вероятностями, которые определены, являются, когда 'p' является членом некоторого подмножества' s' интервала, где 's' должно иметь меру (Lebesgue?) больше нуля.Извините, что прямо не отвечает на ваш основной вопрос о парном разряде, но, возможно, это помогает думать в этом контексте. –

+0

@SamRoberts: Правильная терминология из [сигма-алгебры] (http://en.wikipedia.org/wiki/Sigma-algebra) для этого «почти наверняка» (http://en.wikipedia.org/wiki/ Almost_surely), «обычно сокращенно – horchler

ответ

1

Нет частности информации о генераторе MATLAB в ...

В общем даже простом pseudo-random generators достаточно долго циклов, которые охватывали бы все значения, представимых дважды.

Если MATLAB использует какую-либо другую форму генерации случайных чисел, это было бы еще лучше - поэтому, предполагая, что он равномерно охватывает весь диапазон двойных значений.

Я считаю, что вероятность будет: расстояние между представляемыми числами вокруг интересующих вас значений, деленное на длину интервала. См. What is the minimal step in double data type? (.NET) для обсуждения расстояния.

1

Глядя на this question, мы видим, что есть 2 - 2 двойники в интервале (0 1). Таким образом, вероятность того, чтобы выбрать какой-либо одной (например, 0,5) будет примерно равен единице, деленной на этот номер, или

>> p = 1/(2^62-2^52) 
ans = 
    2.170523997312134e-019 

Однако, как horchler уже указывает на то, что также зависит от типа генератора случайных чисел вы использования, а также их реализации MATLAB. К сожалению, у меня есть только базовые знания по деталям реализации для каждого, но вы можете посмотреть here на список доступных генераторов случайных чисел в MATLAB и google немного дальше для более точных чисел.

+0

Обратите внимание, что большинство точек между 0 и 1 будут ближе к 0, чем к 1, поэтому, на мой взгляд, ваша оценка больше соответствует нижней границе. –

+0

@DennisJaheruddin: Это правда ... Выбирает ли Mersienne Twister любую «двойную» из (0,1) с равной вероятностью или любое «число»? Если это первый случай, мой ответ правильный. Но я действительно ожидаю, что случай * второго * будет целью алгоритма, поэтому вам придется смотреть на два отдельных интервала '(0, X)' и '(X, 1)' (с 'X = 0.5' в этом случае) и переделать числа. –

0

Я не уверен, пытался ли Алексей сказать это, но вдохновленный им, я думаю, что вероятность действительно будет примерно равна расстоянию между числами около 0,5.

Поэтому я ожидаю, что вероятность быть приблизительно:

eps(0.5) 

который оценивает в 1.1102e-16


Учитывая монотонный характер разницы между двойными номерами я бы на самом деле думаю, что это имеет место :

eps(0.5-eps(0.5)) <= yourprobability <= eps(0.5) 

Предполагая диапазон от 5.5511e-17 до 1.1102e-16

Смежные вопросы