- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码中,我想确保 theImageRand 等于 theImage 或 theImage2 的机会均等,但我意识到等于 2 mod 1 的数字比 2 mod 0 多出 1 到 100 个数字。所以 theImage被选择的时间过多。
这是我想到的最简单的想法,但也许有一个函数可以更轻松地做到这一点?我还想我可以找到一个适合我正在寻找的数字并将其放入 randi(n) 中。
xRand = randi(100);
if mod(xRand,2) == 1
theImageRand = theImage;
elseif mod(xRand,2) == 0
theImageRand = theImage2;
end
如果我能解释得更清楚,请告诉我。提前致谢。
最佳答案
您的代码完全符合您的要求,但可以通过使用 randi(2)
来简化它并删除 mod
的计算。但是,值得解决更多问题......
mod(xRand,2)
将 1-100 减少到 0/1对于xRand
1 到 100 之间,mod(xRand,2)
的结果将在 0 和 1 上均匀分布,如执行以下代码所示:
xRand = 1:100;
xMod = mod(xRand,2);
cnt1 = sum(xMod == 1) % results in 50
cnt0 = sum(xMod == 0) % results in 50 as well
基本上,您的代码按预期工作,因为 randi
选择 1 到 100 之间的均匀分布数字。随后,mod
将它们简化为二进制表示,由于映射是针对相等的 bin 完成的,因此该表示仍然是均匀分布的。
randi(2)
进行简化生成这些均匀分布的二进制数的整个过程可以通过从头开始生成一个二进制集来简化。要实现此目的,您可以使用 randi(2)
它直接给你 1
或2
正如rayryeng
在他对这个问题的评论中指出的那样。
这将为您提供以下代码:
xRand = randi(2);
if xRand == 1
theImageRand = theImage;
elseif xRand == 2
theImageRand = theImage2;
end
现在我们来看看这个问题的有趣部分:结果真的均匀分布吗?为了检查这一点,我们可以运行代码 N
次,然后分析每个图像被选择的次数。因此,我们将 1 分配给第一张图像,将 2 分配给第二张图像,并将结果存储在 res
中。 。在 for 循环之后,我们对元素为 1 或 2 的位置求和。
N = 1000000;
theImage = 1;
theImage2 = 2;
res = zeros(N,1);
for n = 1:N
xRand = randi(2);
if xRand == 1
theImageRand = theImage;
elseif xRand == 2
theImageRand = theImage2;
end
% xRand = randi(100);
% if mod(xRand,2) == 1
% theImageRand = theImage;
% elseif mod(xRand,2) == 0
% theImageRand = theImage2;
% end
res(n) = theImageRand;
end
cnt1 = sum(res==1);
cnt2 = sum(res==2);
percentage1 = cnt1/N*100 % approximately 50
percentage2 = cnt2/N*100 % approximately 50 as well
正如我们所见,percentage1
和percentage2
大约为 50,这意味着两个图像在大约 50% 的时间内同时被选中。 计算cnt1
之间的差异可能会产生误导。和cnt2
因为如果N
,这个数字可能会很高。很大。但是,如果我们在许多实现中观察到这种差异,则总体平均值将大约为零。此外,我们可以观察到您的代码使用 mod(randi(100),2)
也给出了 50% 的分布。它只是不如 randi(2)
的解决方案那么高效和直接。 ,在我使用 R2016a 的计算机上,其执行速度大约提高了 15%。
底线:我建议使用 randi(2)
如上所述,因为它更直观且更有效。观察到的差异归因于随机过程,并通过更多的实现来平衡自身。重要的是要考虑两个图像的百分比而不是绝对差异。
关于matlab - 创建一个具有偶概率的随机 int 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278184/
接下来是我的代码: with open("test.txt") as f_in: for line in f_in: for char in line:
我们有一个六面骰子,面编号为 1 到 6。随着 n 的增加,在第 n 卷中第一次看到 1 的概率降低。我想找到最小的卷数,使得这个概率小于某个给定的限制。 def probTest(limit):
我只是想知道为什么运行下面的代码时出现错误。我正在尝试使用 numpy 为基于文本的游戏计算概率。下面的代码不是游戏本身的代码。这仅用于测试目的和学习。感谢您提前的答复,请对我宽容一点。 from n
我目前正在创建一个与多个arduino板通信的服务器软件。由于硬件原因,我使用UDP协议(protocol)。我有一个非常简单的机制,在大多数情况下,当包裹丢失时,它会重新发送包裹。我现在有两个问题:
我想在 LinearLayout 上添加一个 fling Action 。为此,我使用了以下代码。 public class NewsActivity extends Activity { .
下面是其中一个 facebook 谜题:我无法理解如何进行此操作。 你有 C 个容器、B 个黑球和无限数量的白球。您希望以一种方式在容器之间分配球,即每个容器至少包含一个球,并且选择白球的概率大于或等
我有一个希伯来语文本,就像 "×گض¸×¨ض´×™×،ض°×کוض¹×ں",我想将它转换为可读的 unicode 希伯来语字符。 我试过这段代码: const string Str = "×گض¸×
我正在尝试使用 Random.nextDouble() 获取 1.0 和 10.0 之间的随机双数: double number = 1.0 + (10.0-1.0) * Random.nextDou
我目前已经为二进制类实现了概率(至少我这么认为)。现在我想扩展这种回归方法,并尝试将其用于波士顿数据集。不幸的是,我的算法似乎被卡住了,我当前运行的代码如下所示: from sklearn impor
我在 2D 空间中有一小组数据点(大约 10 个),每个数据点都有一个类别标签。我希望根据现有数据点标签对新数据点进行分类,并关联属于任何特定标签类别的“概率”。 基于最近邻的标签来标记新点是否合适(
我正在做我的第一个 tensorflow 项目。 我需要获得给定输入和预期序列的 ctc 概率(不是 ctc 损失)。 在 python 或 c++ 中是否有任何 api 或方法可以做到这一点? 我更
我正在尝试通过 assignment 1斯坦福 cs244n 类(class)。问题 1b 强烈建议对 Softmax 函数进行优化。我设法得到了N维向量的Softmax。我还得到了 MxN 维矩阵的
我有一个预测算法的想法,该算法可以根据所选项目先前出现的顺序准确预测随机值,并分析模式以提高准确性。 基本上是一种接受两个参数的算法,一个是一组可能的选择;另一个是这些数字的历史,分析该模式并预测序列
自 HOURS 以来,我一直在努力思考这个 TopCoder 问题,但无法找到一个完美的解决方案,并找到了下面给出的一个使用得非常漂亮的解决方案! 我想弄清楚这个解决方案如何适用于给定的问题?而我当初
我只知道如何生成随机 boolean 值(真/假)。默认概率为 50:50 但是我怎样才能用我自己的概率生成真假值呢?假设它以 40:60 或 20:80 等的概率返回 true... 最佳答案 一种
对于以下示例,我如何计算 julia 中的百分位数/概率值/尾部区域 Example : N(1100, 200) #Normally distributed with mean 1100 & st
我正在尝试修改标准 kNN 算法来获取属于某个类别的概率,而不仅仅是通常的分类。我还没有找到太多关于概率 kNN 的信息,但据我了解,它的工作原理与 kNN 类似,不同之处在于它计算给定半径内每个类的
我正在使用 PostgreSQL 为我所有数据中的变量对计算经验概率密度函数。我试图确定在计算 PDF 之前索引是否/何时更有效。我像这样运行 EXPLAIN CREATE INDEX, EXPLAI
有谁知道当查询有偏移时如何在 MySql 中请求“实时结果集”(例如:select * from table limit 10 offset 20;)。它正在经历类似 的错误 'invalid use
unsigned long long int first( int b , int c){ int h=b; //int k; for(int k=b-1;k>c;k--){ b=b*k;
我是一名优秀的程序员,十分优秀!