How to similuate a coin flip with probablility p
99 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Zach
el 9 de Nov. de 2011
Comentada: ali fadi
el 11 de Abr. de 2022
How do I simulate getting a result, either 0 or 1, with probability p. So if p=0.5 I should get an output of 0 half of the time, and 1 half of the time.
1 comentario
ali fadi
el 11 de Abr. de 2022
probability and statics the probability function flipping 3 coins in matlab
Respuesta aceptada
Wayne King
el 9 de Nov. de 2011
100 tosses with p=0.5.
x = round(rand(100,1));
If you want a probability other than p=0.5, then realize that rand() is uniform random number generator between [0,1], so you can assign the output of rand() accordingly. For example, for p=0.25:
y = zeros(100,1);
x = rand(100,1);
y(x<0.25) = 1;
Or if you just want to simulate the number of 0's or 1's in a certain number of trials. Say 100 for example. Here is a simulation of ten such experiments. Requires Statistics Toolbox.
R = binornd(100,0.5,10,1);
0 comentarios
Más respuestas (3)
Nick
el 9 de Nov. de 2011
Alternatively you could use the randi function in MATLAB which generates random integers.
100 tosses with 0=heads, 1=tails
coin=randi([0:1], [100,1])
It should more or less give you 50 0's and 50 1's.
If there is more than 2 possible outcomes and they all occur with the same probability then just increase the integer range of the randi function.
4 comentarios
Image Analyst
el 13 de Nov. de 2021
Editada: Image Analyst
el 13 de Nov. de 2021
@Evangelia Lo, if you have the Image Processing Toolbox you can use bwareafilt() to extract runs of only the length you want and then bwlabel() or regionprops() to count them. If you want to find the index where each run starts, use regionprops():
coins = logical(randi([0, 1], 1, 30000)); % 30,000 coins
patternLength = 10; % Whatever you want
% Throw out all regions that don't match the length we want using bwareafilt(). Need to invert.
coins2 = bwareafilt(~coins, [patternLength, patternLength]);
% Count them
props = regionprops(coins2, 'PixelIdxList');
numPatternOccurrences = numel(props)
% For fun, find out where they occur.
indexes = vertcat(props.PixelIdxList); % All 10 indexes in a run
startingIndex = indexes(1 : patternLength : end) % Just the starting index.
Cory London
el 15 de Nov. de 2018
This code is easily minupulated and works pretty well
Ntoss = 100;
x = rand(1, Ntoss); % what is the resulting size of x?
toss = (x < 0.5);
1 comentario
SARATHRAJ V
el 20 de Feb. de 2021
Ntoss = 100; x = rand(1, Ntoss); % what is the resulting size of x? toss = (x < 0.5);
0 comentarios
Ver también
Categorías
Más información sobre Random Number Generation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!