C语言如何生成n个随机数使得他们合为1

JOKERCDD 2020-03-23 08:50:58
C语言生成n个随机数,随机数范围为-1到1,然后n为自己输入的值,使得随机数合为1,求问各位大佬
...全文
300 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin5161678 2020-03-23
  • 打赏
  • 举报
回复
while(1) { t = rand()%(2*s+1) - s;//生成[-s,s]随机数 if(s-t<=100) break; } 要保证s-t 结果小于等于100 从前面的 随机数范围都手脚比较方便 还能把循环去掉
qybao 2020-03-23
  • 打赏
  • 举报
回复
for example 先以总和为基数取随机数,每生成一个随机数,再以总和减去该随机数为基数生成下一个随机数,一直取满n-1个,最后一个用剩余的总和即可。 for example int n; scanf(“%d”, &n); double *d = (double*)malloc(sizeof(double)*n); srand(time(NULL)); int s = 100, t=0; for (int i=0; i<n-1; i++) { while(1) { t = rand()%(2*s+1) - s;//生成[-s,s]随机数 if(s-t<=100) break; } d[i] = t/100.0; //生成[-1,1]随机数 s -= t; //每次生成随机数后修改总和 } double[n-1]=s/100.0; //最后一个
kkuipp 2020-03-23
  • 打赏
  • 举报
回复
直接生成不太好弄,可以先生成n-1个相加为0的随机数,然后最后一个数固定为1。
JOKERCDD 2020-03-23
  • 打赏
  • 举报
回复
随机数保留2位小数

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧