Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:18 28.04.24 
Природни науки
   >> Математика
*Кратък преглед

Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема Вероятностнови  
Автор Dijkstra (сектант)
Публикувано30.05.11 15:53



вероятността да се падне тура е 90%
вероятността да се падне ези е 10%
монетата се хвърля 1000 пъти
каква е вероятността в тези 1000 хвърляния да се падне поредица от 20 или повече тура?

пример:
TETETETETETE .... TTTTTTTTTTTTTTTTTTTT.....TETE - 1000 хвърляния


С долния код на Ц# ми го изкарва 100%


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace ConsoleApplication1
{
class Program
{
// possibility for 1 = 0.9
//possibility for 0 = 0.1
static byte[] thousand = new byte[1000];
static void Fill()
{

byte tmp;
for (int i = 0; i < 1000; i++)
{
tmp =RollDice(10);
if (tmp == 0)
{
thousand = 0;
}
else
{
thousand = 1;
}
}
}

static bool Check()
{
int start = 0;
for (int i = 0; i < 1000; i++)
{
if (thousand == 0)
{
start = 0;
}
else
{
start++;
if (start >= 20)
{
return true;
}
}
}
return false;
}

static void Main()
{
int counter = 0;
for (int i = 0; i < 100000; i++)
{
Fill();
if (Check())
{
counter++;
}
}
Console.WriteLine(counter);
counter = Console.Read();
}



// This method simulates a roll of the dice. The input parameter is the
// number of sides of the dice.

public static byte RollDice(byte numberSides)
{
if (numberSides <= 0)
throw new ArgumentOutOfRangeException("numberSides");
// Create a new instance of the RNGCryptoServiceProvider.
RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
// Create a byte array to hold the random value.
byte[] randomNumber = new byte[1];
do
{
// Fill the array with a random value.
rngCsp.GetBytes(randomNumber);
}
while (!IsFairRoll(randomNumber[0], numberSides));
// Return the random number mod the number
// of sides. The possible values are zero-
// based, so we add one.
return (byte)((randomNumber[0] % numberSides));
}

private static bool IsFairRoll(byte roll, byte numSides)
{
// There are MaxValue / numSides full sets of numbers that can come up
// in a single byte.
int fullSetsOfValues = Byte.MaxValue / numSides;

// If the roll is within this range of fair values, then we let it continue.

return roll < numSides * fullSetsOfValues;
}

}
}




Тема Re: Вероятностнови [re: Dijkstra]  
Автор harish_chandra (curmudgeon)
Публикувано30.05.11 19:44



Не знам какво прави програмата, но предполагам, че е от закръгляне. Вероятноста е много близка до 100%. Разликата е след хилядния знак след запетаята, и затова сигурно го закръглява.



Тема не е от закръгляненови [re: harish_chandra]  
Автор zaphod (мракобес)
Публикувано31.05.11 07:07



броя на опитите е твърде малък за да се измери вероятност.

аз написах малко по-оптимизиран алгоритъм за смятане


int test()
{

int seq=0;
for(int i=0;i<1000;i++){
int r=rand()&0xfff;
if(r>0xfff/10)seq++;
else seq=0;
if(seq==20)return i;
}
return 0;
}


int main(){
srand(GetTickCount());
int i,j;
int not=0;
__int64 start=0;
int sn=0;
for(i=0;i<N;i++){
if(j=test()){
start+=j-20;
sn++;
}else not++;
if(i%(N/100)==0)printf("|");;
}

printf("p=%d start:%f\n",not,(double)start/sn);
scanf("%d\n",&i);


и при 100 милиона опита все още няма нито едно събитие, а смята към две минути. ще го пусна на работа на бърз компот с повече опити. разпечатвам и средното място където се намира поредицата, което е някъде към позиция 51.34.

впрочем, разпределението би трябвало да е близко до поасоново и може да се сметне теоретично и да се сравни с резултата от симулацията.



NE SUTOR ULTRA CREPIDAM

Редактирано от zaphod на 31.05.11 07:45.



Тема 1 милиард опитанови [re: zaphod]  
Автор zaphod (мракобес)
Публикувано31.05.11 10:31



и нито един случай. обаче, може да предположим че вероятността да не се случи поредица намалява експоненциално с дължината на поредицата, и измервайки средното място за поява на поредица индиректно да сметнем каква е вероятността. ако това е така, може да очакваме че вероятността е близо едно на три милиарда, което е на границата на това което меря, но ще го пусна обедната почивка с 10 милиарда опита да видим какво ще направи. правя проби сега,
с вероятност 8/9 дава 98 събития за 100 милиона опита, което е 1/милион, при средна поява на позиция 65, хиляда делено на логаритъм от милион е 72, значи
с вероятност 7/8 дава 2930 събития, среден старт на 86, хеляда делено на логаритъма е 95,
с вероятност 6/7 дава старт на 124, по горната формула получавам 134.
странно все пак, човек би помислил че корекцията е 10тина%, което значи че на 50-100 милиона проби трябва да има събитие.




NE SUTOR ULTRA CREPIDAM


Тема Re: не е от закръгляненови [re: zaphod]  
Автор noTeHHEgaP (член)
Публикувано31.05.11 11:26



аз съм съгласен с хариш, че вероятността е близо до 100%. ако вероятността за тура е p, a броя на хвърлянията е n, приблизителна формула за очакваната дължина от поредни тура е -log(n*(1-p))/log(p). за n=1000, p=0.9 очакваме поредица от 40тина поредни тура. вероятността за 20 и повече е близка до единица, не знам що твойта симулация дава подобни резултати



Тема Re: не е от закръгляне [re: noTeHHEgaP]  
Автор zaphod (мракобес)
Публикувано31.05.11 13:36



че е близка близка е, никой не спори. но колко е близка?




NE SUTOR ULTRA CREPIDAM


Тема мданови [re: zaphod]  
Автор zaphod (мракобес)
Публикувано31.05.11 17:30



след като за 0.9 се различаваше твърде силно от очакваното, смених рнд генератора и вече се съгласува добре - 50 на милиард опита.
имам предвид, в оригиналната формулировка вероятността е 1-50/1е9




NE SUTOR ULTRA CREPIDAM


Тема Re: не е от закръгляненови [re: zaphod]  
Автор harish_chandra (curmudgeon)
Публикувано31.05.11 18:00



Това не е ли от стандартните примери, марковски вериги или не знам си какво. Може да се сметне точно без симулации. Най-малкото би трябвало да може да се напише лесно рекурентна зависимост.



Тема Re: не е от закръгляненови [re: zaphod]  
Автор noTeHHEgaP (член)
Публикувано31.05.11 18:53



аха аз си поислих че ти твърдиш обратното понеже не ми стана ясно какво наричаш "събитие". иначе може да се сметне директно с рекурсивната формула като в (4):





Тема Re: мданови [re: zaphod]  
Автор Паньо Донев (пират)
Публикувано31.05.11 21:14



Добре си се сетил да смениш рандом генератора. Стандартния rand() не став за симулации. За С++ от boost marsene twistera е добър например.




Страници по тази тема: 1 | 2 | 3 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.