如:142357869
請指導一下吧
3謝謝
--
Ξ Origin: 中興大學天樞資訊網 <b...@bbs.nchu.edu.tw> [FROM: 172.145.22.219]
我不是高手...
不過若是我,我會先把1~9放進陣列裏
然後用亂數選1~9 , 再由這個亂數當陣列索引找值
然後把亂數範圍 -1 (1~8), 再把陣列最後一個的值,移到剛才得到的值的位置
這樣就不會重覆,而且滿快的 ~
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: student.cgu.edu.tw
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
怎麼貼了幾天了,還沒有人還更正上述的公式有誤。
無奈,只好自己來收尾了:
※ 引述《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));
^^^^^^^
才對。
題目定義有問題。
> 例如我要產生1到9的數字可是要隨機且這9個數字都不同
> 如:142357869
這裡 23 不就連續了嗎? 78 也是連續啊?
John Lin
嗯,還有一個方法:
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