亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
123下一頁(yè)
最近訪問板塊 發(fā)新帖
查看: 5503 | 回復(fù): 28
打印 上一主題 下一主題

[數(shù)值計(jì)算] 給定一個(gè)數(shù),不停產(chǎn)生隨機(jī)數(shù),直到產(chǎn)生的隨機(jī)數(shù)之和等于給定的這個(gè)數(shù) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-04-19 20:19 |只看該作者 |倒序?yàn)g覽
假如 :給定一個(gè)數(shù)a=200

然后開始不停產(chǎn)生小于 200的隨機(jī)數(shù),直到 這些隨機(jī)數(shù)之和等于 a (產(chǎn)生的隨機(jī)數(shù)之和不能大于或者小于a)

然后將這些隨機(jī)數(shù) 存儲(chǔ)于 數(shù)組中。

請(qǐng)教 大神們這個(gè)shell應(yīng)該怎么去寫。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2016-04-19 20:25 |只看該作者
本帖最后由 lmtwl 于 2016-04-19 20:56 編輯


  1. #!/bin/bash
  2. #set -x
  3. function rand(){
  4.     min=$1
  5.     max=$(($2-$min+1))
  6.     num=$(($RANDOM+1000000000))
  7.     echo $(($num%$max+$min))
  8. }
  9. j=100
  10. for ((i=0;j>0,j>30 ;i++  ));do
  11.     x[i]=$(rand 10 30)
  12.         j=`expr $j - ${x[i]}`
  13.         [ $j -lt 30 ] && { x[i+1]=$j ; }
  14. done

  15. for ((i=0;i<${#x[@]};i++));do

  16. echo ${x[i]}


  17. done

復(fù)制代碼
代碼真的很笨, 實(shí)現(xiàn)出來(lái)了,但是存在很大問題,假如我給定的數(shù)小于 隨機(jī)數(shù)的最大范圍的值的2倍,會(huì)出問題。

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
3 [報(bào)告]
發(fā)表于 2016-04-19 20:47 |只看該作者
回復(fù) 1# lmtwl

第一次2,第二次199,程序結(jié)束?重新再來(lái)?
   

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2016-04-19 20:52 |只看該作者
回復(fù) 3# Herowinter

回復(fù) 3# Herowinter

對(duì)。

最好的話 ,第一次參數(shù)2 ,第2次 產(chǎn)生了 199 ,就重新再產(chǎn)生 成198,第一次產(chǎn)生的不變動(dòng)


   
   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2016-04-19 21:05 |只看該作者
回復(fù) 3# Herowinter


   

解決了那個(gè)問題。


#!/bin/bash
#set -x
function rand(){
    min=$1
    max=$(($2-$min+1))
    num=$(($RANDOM+1000000000))
    echo $(($num%$max+$min))
}
j=100
a=`expr $j / 2`
for ((i=0;j>0,j>$a ;i++  ));do
    x=$(rand 10 $a)
        j=`expr $j - ${x}`
        [ $j -lt $a ] && { x[i+1]=$j ; }
done

for ((i=0;i<${#x[@]};i++));do

echo ${x}


done

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
6 [報(bào)告]
發(fā)表于 2016-04-19 21:12 |只看該作者
本帖最后由 Herowinter 于 2016-04-19 21:12 編輯

回復(fù) 4# lmtwl

不想用awk的話,應(yīng)該可以改成shell的吧。
  1. echo|awk 'BEGIN{srand();max=target=200} {while(sum<target){r=int(rand()*200%max+1);sum+=r;if(sum>target){sum-=r;max=r-1}else a[++n]=r};for(i=1;i<=n;i++)print a[i]}'
  2. 129
  3. 7
  4. 1
  5. 40
  6. 15
  7. 3
  8. 3
  9. 1
  10. 1
復(fù)制代碼

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2016-04-19 21:14 |只看該作者
回復(fù) 6# Herowinter


    強(qiáng),我整了那么多,你一句話就給我搞出來(lái)了

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
8 [報(bào)告]
發(fā)表于 2016-04-19 23:18 |只看該作者
本帖最后由 sunzhiguolu 于 2016-04-19 23:21 編輯
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($sSum, @aNums) = (0);
  5. {
  6. RESTART:
  7.     push (@aNums, int rand 200);
  8.     $sSum += $_ for (@aNums);
  9.     if ($sSum != 200){
  10.         if ($sSum > 200){
  11.             splice (@aNums, -1);
  12.         }
  13.         $sSum = 0;
  14.         goto RESTART;
  15.     }
  16. }

  17. printf ("%d => {%s}\n",$sSum,join ('+', @aNums));
復(fù)制代碼

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
9 [報(bào)告]
發(fā)表于 2016-04-19 23:30 |只看該作者
本帖最后由 sunzhiguolu 于 2016-04-19 23:33 編輯
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($sSum, @aNums) = (0);
  5. until ($sSum == 200){
  6.     $sSum = 0;
  7.     push (@aNums, int rand 200);
  8.     $sSum += $_ for @aNums;
  9.     splice (@aNums, -1) if ($sSum > 200);
  10. }
  11. printf ("%d => {%s}\n",$sSum,join ('+', @aNums));
復(fù)制代碼

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
10 [報(bào)告]
發(fā)表于 2016-04-20 00:02 |只看該作者
本帖最后由 sunzhiguolu 于 2016-04-20 00:13 編輯

回復(fù) 1# lmtwl
1.> 如果生成的隨機(jī)數(shù)恰巧比較小, 那么生成的隨機(jī)數(shù)一定有非常多的重復(fù). (如何避免生成重復(fù)的隨機(jī)數(shù), 總和依舊是 200)
2.> 如何控制總和是 200, 但生成的隨機(jī)數(shù)的組成的個(gè)數(shù).
3.> 補(bǔ)充一個(gè), 能否控制按順序生成隨機(jī)數(shù). 由大到小的隨機(jī)數(shù), 總和依舊是 200.
隨便一問, .

   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP