如何调用我生成的大小为100的随机数来模拟玩骰子100次

时间:2018-05-29 12:14:32

标签: matlab static

我想通过生成一个大小= 100的随机变量的样本来模拟玩骰子100次。计算事件'偶数概率的点估计值P.

这是我的功能,我评论“i-loop”因为我想写另一个函数而我调用myRand()

function [result]=myRand()

%generate a sample with size = 100

 X = [1 2 3 4 5 6];
 P = [1/6 1/6 1/6 1/6 1/6 1/6];


size=100;
%n=100;  % playing dice 100 times
result=zeros(100,1);
  %for i=1:n
    for j=1:size 

         result(j,:)=randsample(X,1,true,P);
    end
  %end
end

我的问题是,当我调用myRand()

function simulate()

    % simulate trowing dice

    countEven = 0; % count even
    n=100;  % playing dice 100 times
    throw_dice = zeros(n,2);
    for i = 1:n

        throw_dice(i) = myRand();

    end
end

我肯定有一个错误“在作业A(:) = B中,A和B中的元素数必须相同。”  知道如何调用我的函数?

1 个答案:

答案 0 :(得分:2)

<强> myRand:

首先在myRand中使用size作为变量名是不好的做法,因为它已经是Matlab中的一个函数。

其次,您可以使用

一次性生成所有100个变量
randsample(X,100,true,P)

第三,你应该把变量的数量作为参数myRand(number)

总计:

function [result]=myRand(number)

%generate a sample with size = number

X = [1 2 3 4 5 6];
P = [1/6 1/6 1/6 1/6 1/6 1/6];

result=randsample(X,number,true,P);

myRand现在将返回number重复掷骰子。

<强>模拟

关于simulate功能,请重复myRand一百次。在您的版本中myRand生成一百个随机变量。换句话说,你要求百个变量一百次。

所以你必须做出选择,myRand应该生成100个变量,还是应该调用100次(一次只能生成1个)。通常,一次生成所有内容的速度更快。

因此您的simulate现在是:

function simulate()

% simulate trowing dice
n=100;  % playing dice 100 times
throw_dice = myRand(n); %Ask for n rolls

%*************
%Insert code to count even rolls.
%*************

或者它是:

function simulate()
% simulate trowing dice
n=100;  % playing dice 100 times
even_rolls = 0;
for i = 1:n %Roll the die n times
    throw_dice = myRand(1); %Ask for 1 number
    %*************
    %Insert code to count even rolls.
    %*************
end