Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請問高手如何產生不連續隨機變數

0 views
Skip to first unread message

世界上最強的咖啡糖

unread,
Jul 1, 2001, 8:40:48 PM7/1/01
to
請問一下,要如何產生不連續的且不相等的變數呢
例如我要產生1到9的數字可是要隨機且這9個數字都不同

如:142357869

請指導一下吧
3謝謝


--
Ξ Origin: 中興大學天樞資訊網 <b...@bbs.nchu.edu.tw> [FROM: 172.145.22.219]

夢想家

unread,
Jul 1, 2001, 9:14:24 PM7/1/01
to
※ 引述《totol...@bbs.nchu.edu.tw (世界上最強的咖啡糖)》之銘言:

> 請問一下,要如何產生不連續的且不相等的變數呢
> 例如我要產生1到9的數字可是要隨機且這9個數字都不同
> 如:142357869
> 請指導一下吧
> 3謝謝

我不是高手...
不過若是我,我會先把1~9放進陣列裏
然後用亂數選1~9 , 再由這個亂數當陣列索引找值
然後把亂數範圍 -1 (1~8), 再把陣列最後一個的值,移到剛才得到的值的位置


這樣就不會重覆,而且滿快的 ~

--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: student.cgu.edu.tw

fractal

unread,
Jul 2, 2001, 5:54:16 AM7/2/01
to
※ 引述《totol...@bbs.nchu.edu.tw (世界上最強的咖啡糖)》之銘言:
> 請問一下,要如何產生不連續的且不相等的變數呢
> 例如我要產生1到9的數字可是要隨機且這9個數字都不同
> 如:142357869
> 請指導一下吧
> 3謝謝

random number x, x is integer and the range is [m, n]

#include <stdlib.h>
//...
x= m + (int)( (double)n * rand() / (RAND_MAX + 1.0));
//...

--

The art of programming is the art of organising complexity.
-- Dijkstra
--
E-mail: ykj...@pchome.com.tw
--
[1;32m┌───── [33m◆ [37mKKCITY [33m◆ [32m─────┐ [34m┐┌┐┐┌┐┌─┐┌┬┐┌┬┐┐ ┌ [m
[1;32m│ [31m bbs.kkcity.com.tw [32m│ [37m├┘┐├┘┐│ │ │ └┬┘ [m
[1;32m└── [34m《 [0;37mFrom:210.208.12.52 [1;34m》 [32m──┘ [36m┘ ┘┘ ┘└─┘└┴┘ ┴ ┴ [m

fractal

unread,
Jul 3, 2001, 10:37:42 PM7/3/01
to

  怎麼貼了幾天了,還沒有人還更正上述的公式有誤。

  無奈,只好自己來收尾了:

※ 引述《ykjiang (fractal)》之銘言:


> ※ 引述《totol...@bbs.nchu.edu.tw (世界上最強的咖啡糖)》之銘言:
> > 請問一下,要如何產生不連續的且不相等的變數呢
> > 例如我要產生1到9的數字可是要隨機且這9個數字都不同
> > 如:142357869
> > 請指導一下吧
> > 3謝謝
> random number x, x is integer and the range is [m, n]
> #include <stdlib.h>
> //...

> x= m + (int)( (double) n * rand() / (RAND_MAX + 1.0));
               ^^^
應該是
  
  x= m + (int)( (double)(n-m+1) * rand() / (RAND_MAX + 1.0));
             ^^^^^^^
                                   
才對。

John Lin

unread,
Jul 4, 2001, 1:54:13 AM7/4/01
to
"世界上最強的咖啡糖" 撰寫
> 請問一下,要如何產生不連續的且不相等的變數呢

題目定義有問題。

> 例如我要產生1到9的數字可是要隨機且這9個數字都不同
> 如:142357869

這裡 23 不就連續了嗎? 78 也是連續啊?

John Lin

fractal

unread,
Jul 4, 2001, 3:51:33 AM7/4/01
to

  呵!之前沒注意看,我想它是要類似抽簽那樣,抽走的,就不放回
了。

  嗯,還有一個方法:
1首先,還是把n個數字放進陣列裡。
2接著,隨機決定兩個索引,並將其內的值交換。
3重複步驟二最少n次。
4現在就可以從陣列的前面開始一張張地“發牌”了。

  哈!這是類似“洗牌”演算法的變形。


※ 引述《elbie...@bbs.cs.nthu.edu.tw (夢想家)》之銘言:


> ※ 引述《totol...@bbs.nchu.edu.tw (世界上最強的咖啡糖)》之銘言:
> > 請問一下,要如何產生不連續的且不相等的變數呢
> > 例如我要產生1到9的數字可是要隨機且這9個數字都不同
> > 如:142357869
> > 請指導一下吧
> > 3謝謝

> 我不是高手...
> 不過若是我,我會先把1~9放進陣列裏
> 然後用亂數選1~9 , 再由這個亂數當陣列索引找值
> 然後把亂數範圍 -1 (1~8), 再把陣列最後一個的值,移到剛才得到的值的位置
> 這樣就不會重覆,而且滿快的 ~


--

The art of programming is the art of organising complexity.
-- Dijkstra
--

E-mail: ykj...@ms.uniminer.com

0 new messages