廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 11839 個閱讀者
04:00 ~ 4:30 資料庫備份中,需等較久的時間,請耐心等候
 
<<   1   2  下頁 >>(共 2 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
csr
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x0 鮮花 x898
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][求助] 產生十個任一亂數
有一題目
要產生10個-9,-4,1,......,101之任一亂數
小弟只曉得隨意產生
但是指定要在差5的情形下
真的是想了老半天
就是寫不出來
底下是小弟的程式
請 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



獻花 x0 回到頂端 [樓 主] From:臺灣中華電信股份有限公司 | Posted:2011-03-23 21:29 |
totsi
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x53
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

要有X5..那看起來不像是亂數阿~XD

但如果是要再-9~101之間取亂數的話,那有個前輩講的『撲克牌取排』作弊的方式可以參考。

就是一開始先建立存有-9~101的陣列。

之後在此陣列的邊界內隨機取亂數的索引值。
例如:
1.陣列內,每個值的索引為Index(-9) = 0, Index (-4) = 1, ...., Index(101) = 23。
2.針對0~23取整數的亂數。
3.如有抓到同一個索引值,則在重新抓。
4.抓到10個索引值後,再把先前存於陣列內,對應於的值取出就好。

不知是否有符合您的需求?

不過話說,如果每個亂數都X5的話,那麼比較像是等差級數值吧XDD


恩...
獻花 x1 回到頂端 [1 樓] From:台灣中華電信 | Posted:2011-03-24 08:43 |
csr
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x0 鮮花 x898
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 totsi 於 2011-03-24 08:43 發表的 : 到引言文
要有X5..那看起來不像是亂數阿~XD

但如果是要再-9~101之間取亂數的話,那有個前輩講的『撲克牌取排』作弊的方式可以參考。

就是一開始先建立存有-9~101的陣列。

之後在此陣列的邊界內隨機取亂數的索引值。
例如:
1.陣列內,每個值的索引為Index(-9) = 0, Index (-4) = 1, ...., Index(101) = 23。
2.針對0~23取整數的亂數。
3.如有抓到同一個索引值,則在重新抓。
4.抓到10個索引值後,再把先前存於陣列內,對應於的值取出就好。

不知是否有符合您的需求?

不過話說,如果每個亂數都X5的話,那麼比較像是等差級數值吧XDD

小弟也不是很清楚
因為才剛學指標與陣列
而且又是自修學習
跟本沒先進可請教
不過還好在此版塊有大大肯不辭勞苦的教導小弟
心中也確實感念不少
所以依大大指引的方向再試看看寫不寫的出來
若不行再向大大討教
謝謝指導


獻花 x0 回到頂端 [2 樓] From:臺灣中華電信股份有限公司 | Posted:2011-03-24 17:20 |
csr
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x0 鮮花 x898
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

請教大大們
小弟這樣寫為何無法編譯
可否幫忙找問題
或者小弟那裡錯了
謝謝

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int i,j;
  int array[23];
  int index(-9)=0,index(-4)=1,index(1)=2,index(6)=3,index(11)=4,index(16)=5,
    index(21)=6,index(26)=7,index(31)=8,index(36)=9,index(41)=10,index(46)=11,
    index(51)=12,index(56)=13,index(61)=14,index(66)=15,index(71)=16,
    index(76)=17,index(81)=18,index(86)=19,index(91)=20,index(96)=21,
    index(101)=22;
  srand((unsigned)array[23]);
  for(i=1;i<=10;i+=1)
  {
  for(j=-9;j<=101;j+=5)
    {
    array[23]=j;
    j=rand()%23+0;
    printf("%d. %d\n",i,j);
    }
  }
  system("pause");
  return 0;
}


獻花 x0 回到頂端 [3 樓] From:臺灣中華電信股份有限公司 | Posted:2011-03-25 21:22 |
totsi
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x53
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

請貼出compiler顯示給您的錯誤訊息嚕^^m

如果找不到要到哪邊看,請按View->Other Window->Error List,裡面會告訴您無法編譯的原因。

這樣幫您找問題的人會比較方便 表情


恩...
獻花 x0 回到頂端 [4 樓] From:台灣中華電信 | Posted:2011-03-28 09:34 |
csr
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x0 鮮花 x898
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 totsi 於 2011-03-28 09:34 發表的 : 到引言文
請貼出compiler顯示給您的錯誤訊息嚕^^m

如果找不到要到哪邊看,請按View->Other Window->Error List,裡面會告訴您無法編譯的原因。

這樣幫您找問題的人會比較方便 表情
大大您好
上面程式有底下錯誤
expected `,' or `;' before '=' token
小弟再怎麼改都沒用
後來索性小弟將它改成下面這樣
它是可以產生十個亂數
但是都是一成不變的亂數
不知那兒有問題
是否可請大大幫小弟診斷問題所在
謝謝您
以下是所改的程式碼

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int i,j;
  int num[23]={-9,-4,1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96,101};
  srand(num[23]);
  for(i=1;i<=10;i++)
  {
  for(j=0;j<=22;j++)
      {
      num[j]=(-9,-4,1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96,101);
      j=rand()%22+0;
      printf("%d. %d\n",i,num[j]);
      break;
      }
  }
  system("pause");
  return 0;
}


[ 此文章被csr在2011-03-28 17:20重新編輯 ]


獻花 x0 回到頂端 [5 樓] From:臺灣中華電信股份有限公司 | Posted:2011-03-28 17:11 |
totsi
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x53
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

亂數都一致的問題是您的Random seed給的都一樣,所以每次都會產生相同的數值。

亂數在下不熟練,只知道最簡單的方法是把時間拿來當seed來產生新亂數。

至於時間要取到多少,會建議到10ms以下,不過也是要看您的需求而定。

至於compile錯誤的問題,可能是因為在c/c++裡面,陣列的使用是用 [] 來指定陣列位置。所以用 () 就會出錯。

您可以修改看看,說不定會有效。

關於Index(-9) = 0指的是Index函式傳入-9,他會回傳陣列位置0。

所以是屬於數學表示的方式,造成您的誤會,很不好意思。

會建議您先把程式流程用文字敘述先建立好,之後再程式碼,會比較清楚流程。

例如:
1.建立存放-9~101,間距為5的23三個數值的陣列。
2.產生0~23之間之整數亂數
3.確認產生之亂數是否有重複產生
4.....
5.....

以此列推,說不定會對您有幫助^^m

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


恩...
獻花 x2 回到頂端 [6 樓] From:台灣中華電信 | Posted:2011-03-29 17:48 |
csr
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x0 鮮花 x898
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 totsi 於 2011-03-29 17:48 發表的 : 到引言文
亂數都一致的問題是您的Random seed給的都一樣,所以每次都會產生相同的數值。

亂數在下不熟練,只知道最簡單的方法是把時間拿來當seed來產生新亂數。

至於時間要取到多少,會建議到10ms以下,不過也是要看您的需求而定。

至於compile錯誤的問題,可能是因為在c/c++裡面,陣列的使用是用 [] 來指定陣列位置。所以用 () 就會出錯。

您可以修改看看,說不定會有效。

關於Index(-9) = 0指的是Index函式傳入-9,他會回傳陣列位置0。

所以是屬於數學表示的方式,造成您的誤會,很不好意思。

會建議您先把程式流程用文字敘述先建立好,之後再程式碼,會比較清楚流程。

例如:
1.建立存放-9~101,間距為5的23三個數值的陣列。
2.產生0~23之間之整數亂數
3.確認產生之亂數是否有重複產生
4.....
5.....

以此列推,說不定會對您有幫助^^m
因為習題的指定
所以才會弄得小弟焦頭爛額
以下小弟再多參考一些書籍或網路問題查詢
看能不能完全解決
謝謝


獻花 x0 回到頂端 [7 樓] From:台灣行政院研考會 | Posted:2011-03-30 15:40 |
csr
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x0 鮮花 x898
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

終於解決了這一題
該題程式碼如下
可以產生十個指定亂數

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main(void)
{
  int i,j;
  srand((unsigned)time(NULL));
  int num[23]={-9,-4,1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96,101};
  for(i=1;i<=10;i++)
  {
  for(j=1;j<=22;j++)
    {
    num[j]=(-9,-4,1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96,101);
    j=(rand()%23)+1;
    printf("%d. %d\n",i,num[j]);
    break;
    }
  }
  system("pause");
  return 0;
}


獻花 x0 回到頂端 [8 樓] From:臺灣中華電信股份有限公司 | Posted:2011-04-04 15:32 |
leacks 手機
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x8 鮮花 x324
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

23個亂數?
既然是-9~101
那就把取到的亂數-9不就好了?

rand()%111-9

也不用建啥陣列了
不然就是要用程式建陣列,否則為了這簡單的小程式花時間在那邊建110個陣列,有點浪費時間.

此文章被評分,最近評分記錄
財富:10 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


獻花 x2 回到頂端 [9 樓] From:臺灣基礎開發科技股份有限公司 | Posted:2011-04-10 08:45 |

<<   1   2  下頁 >>(共 2 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.016354 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言