AS3で配列/数値のシャッフルや乱数生成を行う「Randomize」クラス

ActionScript3.0で配列/数値のシャッフルや乱数生成を行う「Randomize」クラスを作成しました。

静的クラスメンバ“shuffleArray”は指定した配列要素の順序をシャッフルして返し、静的クラスメンバ“shuffle”は指定した範囲内の数値をシャッフルし配列として返します。((シャッフルの方式には Fisher-Yatesのアルゴリズムを使用しています))

静的クラスメンバ“exactRandom”は除外指定した数値以外の乱数を返し、静的クラスメンバ“range”は指定した範囲内の乱数を返します。

ファイル

使用方法

  • myArrayの要素をシャッフルし、shuffledArrayへ代入する
1
2
var myArray:Array = [1, 3, 5, 7, 9]
var shuffledArray:Array = Randomize.shuffleArray(myArray);
  • 1~12までの数値をシャッフルし、12個の要素を持つ配列として shuffledArrayへ代入する
1
2
3
var shuffleMin:uint = 1;
var shuffleMax:uint = 12;
var shuffledArray:Array = Randomize.shuffle(shuffleMin, shuffleMax);
  • 1~12までの乱数を取得し、myUintへ代入する(ただし exceptUintと同じ数値である 1は返らない)
1
2
3
4
var exceptUint:uint = 1;
var randomMin:uint = 1;
var randomMax:uint = 12;
var myUint:uint = Randomize.exactRandom(exceptUint, randomMin, randomMax);
  • 1~12までの乱数を取得し、myUintへ代入する
1
2
3
var randomMin:uint = 1;
var randomMax:uint = 12;
var myUint:uint = Randomize.range(randomMin, randomMax);

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package net.dolice.utils{
  public class Randomize {
      private static var shuffleList:Array = [];
      private static var shuffleNum:uint;
      private static var tempList:Array = [];
      private static var tempInt:int;
      public static function shuffleArray(arr:Array):Array {
          Randomize.shuffleList = arr;
          Randomize.shuffleNum = Randomize.shuffleList.length;
          while (Randomize.shuffleNum) {
              var m:int = Math.floor(Math.random() * Randomize.shuffleNum);
              var n:int = Randomize.shuffleList[--Randomize.shuffleNum];
              Randomize.shuffleList[Randomize.shuffleNum] = Randomize.shuffleList[m];
              Randomize.shuffleList[m] = n;
          }
          return (Randomize.shuffleList);
      }
      public static function shuffle(shuffleMin:int, shuffleMax:int):Array {
          for (var i:uint; i<shuffleMax; i++) {
              Randomize.tempList[i] = i + shuffleMin;
          }
          Randomize.shuffleList = Randomize.shuffleArray(Randomize.tempList);
          return (Randomize.shuffleList);
      }
      public static function exactRandom(exceptInt:int, randomMin:int, randomMax:int):int {
          do {
              Randomize.tempInt = Randomize.range(randomMin,randomMax);
          } while (Randomize.tempInt==exceptInt);
          return (Randomize.tempInt);
      }
      public static function range(randomMin:int, randomMax:int):int {
          var i:int = Math.floor(Math.random()*(randomMax-randomMin+1))+randomMin;
          return (i);
      }
  }
}
   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • アート壁紙HD(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)