Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8878355&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 13:16:34 2016
Кодировка: Windows-1251
генератор случайных чисел в matlab - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
gyrater
Halfling Ranger

Рег.: 25.10.2002
Сообщений: 2439
Рейтинг: 55
  генератор случайных чисел в matlab
      29.08.2009 18:19
-1

Есть проблема с кособокостью rand.
Генерю числа от 0 до 1, тем, что меньше, например, 0+0.03 присваиваю -1, тем, что больше 1-0.03 присваиваю 1, остальным 0. Матожидание в подавляющем большинстве случаев больше 0.
Нужно более хорошо равномерно распределенные случайные числа. Что можете посоветовать?

Нашла в инете, что генератор случайных числе есть в Simulink'е, но у меня урезанный матлаб без симулинка. Если у кого есть Simulink, попробуйте его генератор, плз, он тоже косой или получше?





Редактировал gyrater (29.08.2009 18:35)
Увидеть Denа - к деньгам, счастью и большой удаче... ((c)DizzyDen 22.01.2005 14:47)
unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: генератор случайных чисел в matlab [re: gyrater]
      29.08.2009 18:47
 

Quote:

Генерю числа от 0 до 1, тем, что меньше, например, 0+0.03 присваиваю -1, тем, что больше 1-0.03 присваиваю 1, остальным 0. Матожидание в подавляющем большинстве случаев больше 0.


А почему должно быть по-другому-то?не заметил, что "остальным 0" :(



Редактировал unkulunkulu (29.08.2009 18:59)
_Ss_

Рег.: 21.11.2003
Сообщений: 4145
Рейтинг: 4662
  Re: генератор случайных чисел в matlab [re: gyrater]
      29.08.2009 18:55
3

Может, дело в том, что отрезки для -1 и 1 не равны?
Ну, 1 - (1 - 0.03) не равно 0.03.

Если дело все же в генераторе, а достаточно симметричного, то юзай rnd(0, 1) - rnd(0, 1) (или как они там вызываются)



Если сказанное мной может быть понято двояко, и первый
вариант тебя расстраивает, я имел ввиду второй
unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: генератор случайных чисел в matlab [re: gyrater]
      29.08.2009 19:00
-1

Ну а вообще да, дело может быть в том, что 0.03 не представимо в двоичной системе точно, отсюда ошибки округления и все такое.

unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: генератор случайных чисел в matlab [re: gyrater]
      29.08.2009 20:14
 

Ты лучше скажи каким типом данных считаешь, какой размер выборки. Вот.

gyrater
Halfling Ranger

Рег.: 25.10.2002
Сообщений: 2439
Рейтинг: 55
  Re: генератор случайных чисел в matlab [re: unkulunkulu]
      29.08.2009 21:46
 

Туплю :-(.
Это гениально, что отрезок 0..0.03 не равно отрезок 1-0.03..1. Теперь буду думать как это проверить и читать, как сравнить числа напрямую в двоичной записи.

сравниваю числа в десятичной записи, выборка 1000 случайных чисел.

вот такая прога

n=1000;
r = rand(n,1);

for index=1:n
if r(index) < 0.03125
res(index)=-1;
elseif r(index) >= 0.03125 && r(index) < 0.96875
res(index)=0;
elseif r(index) >= 0.96875
res(index)=1;
end
end



Увидеть Denа - к деньгам, счастью и большой удаче... ((c)DizzyDen 22.01.2005 14:47)
abv

Рег.: 21.09.2007
Сообщений: 6924
Рейтинг: 6747
  Re: генератор случайных чисел в matlab [re: gyrater]
      29.08.2009 21:48
 

и на сколько большое отклонение от 0 получаешь?



зимой и летом велозона
KOHTPA
Carpal Tunnel

Рег.: 22.01.2003
Сообщений: 33647
Рейтинг: 2374
  Re: генератор случайных чисел в matlab [re: gyrater]
      29.08.2009 23:47
2

> Есть проблема с кособокостью rand.
> Нужно более хорошо равномерно распределенные случайные числа.
> Что можете посоветовать?

Прочитать, какой алгоритм встроен, и больше никогда его не использовать.
Написать МТ19937 или задействовать уже готовый, который можно взять
откуда угодно, поскольку алгоритм довольно популярен. Если МТ19937
слишком медленный, подсмотреть в GSL более подходящий.


---
"Лучше жалеть о сделанном, чем об упущенной возможности."

FuckUpper
enthusiast

Рег.: 03.09.2004
Сообщений: 356
Из: Б-107
Рейтинг: 285
  Re: генератор случайных чисел в matlab [re: gyrater]
      30.08.2009 18:17
 

Может, выборка маловата?
code:
>> a = rand(10000000,1); >> a(a<0.03)=-1; >> a(a>1-0.03)=1; >> a(abs(a)<0.99)=0; >> mean(a) ans = -4.5100e-005


А вообще, центральная предельная теорема работает для этого случая "на ура".

unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: генератор случайных чисел в matlab [re: FuckUpper]
      30.08.2009 18:20
 

http://forumbgz.ru/showflat.php?Cat=&Board=lovesex&N...

FuckUpper
enthusiast

Рег.: 03.09.2004
Сообщений: 356
Из: Б-107
Рейтинг: 285
  Re: генератор случайных чисел в matlab [re: unkulunkulu]
      30.08.2009 18:31
4


 
code:
for i = 1:1000 a = rand(1000000,1); a(a<0.03)=-1; a(a>1-0.03)=1; a(abs(a)<0.99)=0; b(i) = mean(a); end length(find(b>0)) ans = 453


 
code:
>> hist(b,30)



Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в