gpt4 book ai didi

matlab - 当乘积为 P 时生成 N 个乘积为 1 和更一般的数?

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:33 26 4
gpt4 key购买 nike

我想生成 N 个随机点,其乘积为某个值 1。

我在 MATALB 中是这样做的:

N_=10;
x1_=rand(1, N_);
p_=prod(x1_);
x_=x1_;
x_(end)=x1_(end)/p_;
prod(x_);

有没有简单的(其他方式)?当 P ~= 1 时呢?

谢谢。

最佳答案

一种方法是利用 log(1) = 0a*b = exp(log(a+b)) 这一事实。

x = rand(N,1);
norm_log_x = log(x)-mean(log(x));
norm_x = exp(norm_log_x);
norm_x =

2.6058
2.7166
0.6396
1.3958
1.0874
1.5147
0.7660
0.1977
1.2618
0.5028

prod(norm_x)
ans =
1.0000

要获取 1 以外的值,您可以执行以下操作:

P = 7;
norm_log_x = log(x)-mean(log(x))+log(P)/length(x);
norm_x = exp(norm_log_x);
prod(norm_x)
ans =
7.0000

关于matlab - 当乘积为 P 时生成 N 个乘积为 1 和更一般的数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com