東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

かき混ぜてはいかがでしょうか

ネタ元 → シャッフル →  トランプのシャッフル

僕ならこうやる。
配列を用意する。ナカミは01~13を入れておく。

01 02 03 04 05 06 07 08 09 10 11 12 13|

縦棒'|'の左をシャッフル前、右をシャッフル後とする。
シャッフル前の要素の中からでたらめにひとつ選び、
シャッフル前の末尾要素と入れ替えて|を左にずらす。
たとえばでたらめに05を選んだなら:

01 02 03 04 13 06 07 08 09 10 11 12|05

同じこと、つまり:
シャッフル前の要素の中からでたらめにひとつ選び、
シャッフル前の末尾要素と入れ替えて|を左にずらす。
たとえばでたらめに10を選んだなら:

01 02 03 04 13 06 07 08 09 12 11|10 05

以下同文に繰り返し、| が左端に達したらシャッフル完了。

VB.NETで書いてみた。

Module ShuffleDemo

    ' x と y を交換する
    Sub Swap(ByRef x As Integer, ByRef y As Integer)
        Dim t As Integer = x
        x = y
        y = t
    End Sub

    ' data() をかき混ぜる
    Sub Shuffle(ByVal data As Integer())
        Dim rnd As New Random()
        For n As Integer = data.Length To 1 Step -1
            ' "n未満の乱数"番目 と "n-1"番目とを入れ替える
            Swap(data(rnd.Next(n)), data(n - 1))
        Next
    End Sub

    Sub Main()
        Dim data(13) As Integer
        ' data() を 1, 2, 3, ... 13 で埋める
        For i As Integer = 0 To data.Length - 1
            data(i) = i + 1
        Next
        ' シャッフルシャッフルぅ
        Shuffle(data)
        ' 結果の確認
        For Each item As Integer In data
            Console.Write("{0} ", item)
        Next
    End Sub

End Module

簡単ぢゃーん♪

 

投稿日時 : 2009年7月13日 13:23

コメントを追加

# re: かき混ぜてはいかがでしょうか 2009/07/13 19:13 n

でたらめな2つ要素の入れ替えを適当な回数繰り返す方法とか

# re: かき混ぜてはいかがでしょうか 2009/07/13 19:34 Jitta

シャッフルというと、連続する一部を抜き出して最上位に積む、とか。

# re: かき混ぜてはいかがでしょうか 2009/07/14 8:51 επιστημη

> でたらめな2つ要素の入れ替え
んむ、横一列に並べた札のテケトーな二枚を交換、ですね。
僕がやったのは横一列に並べた札から一枚ずつデタラメに選んでる。
さて、どっちがよりデタラメになるんだべ。

> 連続する一部を抜き出して最上位に積む
std::listだとspliceできるんで簡単なんすけどねー

# re: かき混ぜてはいかがでしょうか 2009/07/14 13:46 Horuichi_H

シャッフルについては、結城浩さんの問題で要素の入れ替えについては厳密なシャッフルにならないことが示されていますね。
順番に取り出していく場合には、問題ないですね。

# re: かき混ぜてはいかがでしょうか 2009/07/14 15:28 みきぬ

「トランプのシャッフル」にこだわってみた例。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=37873#4

# かき混ぜてはいかがでしょうか C++版 2009/07/22 13:11 東方算程譚

かき混ぜてはいかがでしょうか C++版

# 高級時計選び方 2017/07/08 17:49 oitxlc@icloud.com

ブランド激安市場大特価
当店には、ルイヴィトン、シャネル、グッチ、コーチ、ロレックス、プラダ、 ディオール、ブルガリ財布 その他小物等、
買う多いです、恵みの多いです、
一回注文5件以上、贈呈ルイヴィトンキーケース1個
注文は期待しています。。。
各種海外有名ブランド品を豊富に取り揃え、しかもお客様を第一と考えて、驚きの低価格で提供しております
■スタイルが多い、品質がよい、価格が低い!
■ 送料無料(日本全国) ご注文を期待しています!
■信用第一、良い品質、低価格は
■当社の商品は絶対の自信が御座います。
激安、安心、安全にお届けします.品数豊富な商
商品数も大幅に増え、品質も大自信です100%品質保証!
満足保障!リピーター率100%!
高級時計選び方 http://www.kopi78.com

# ルイヴィトン 激安アクセサリー通販 2017/08/06 15:25 hdmeyhqs@icloud.com

日本的な人気と信頼を得ています。
安心、安全にお届けします
価格、品質、自信のある商品を取り揃えておりますので、
当店の主要な経営のブランド:(ヴィトン ) シャネル(シャネル) Rolex(ロレックス)など.
当店は主に経営する商品:かばん.バッグ .財布 .キーケース. .腕時計など.
日本には無い商品,日本では高価な商品,弊社のない商品,取引先を代理して製造会社を連絡することができる.
弊社長年の豊富な経験と実績があり.輸入手続も一切は弊社におまかせできます.ご希望の商品を責任を持ってお届けします.
当店の商品は特恵を与える。
興味あれば、是非ご覧下さい
財布、腕時計、バッグ一品市場

# エルメス財布コピー 2017/09/17 8:48 iehvtyxdfts@goo.ne.jp

しっかりと梱包もなされており、とても満足しています。ありがとうございました。
★COACH コーチ★レザーバニティバッグ★コスメケース/化粧ポーチ/ハンドバッグ★カーフ★ブラウン★
新しいコスメケース
思っていたよりすごくきれいで、うれしいです。長く愛用していきたいと思います。わーい。
エルメス財布コピー http://www.nawane111.com/hermes-bag.htm

# ダミエ財布コピー 2017/09/17 8:48 gbjvuum@nifty.com

激安ブランド直営店
1.最も合理的な価格で商品を消費者に提供致します。
2.弊社の商品品数大目で、商品は安めです!商品現物写真。
3.数量制限無し、一個の注文も、OKです。
4.1個も1万個も問わず、誠心誠意対応します。
5.不良品の場合、弊社が無償で交換します。不明点、疑問点等があれば、ご遠慮なく言って下さい。
以上よろしくお願いいたします
休業日: 365天受付年中無休
ダミエ財布コピー http://www.copysale.net/ROLEX-Fake.htm

# シャネル 時計 コピー 2022/10/15 21:46 qzzokk@excite.co.jp

ティファニーのエンゲージメントリング購入しました。
何事もなく昨日受取ました。
注文から発送まで激早です!
梱包もキレイでした。
ただ、買った商品が旧型?だったので、ちょっと残念です。
シャネル 時計 コピー https://www.b2kopi.com/product/detail.aspx-id=3735.htm

タイトル
名前
URL
コメント