アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< SQLでイベント毎の参加人数を集計した... 質問一覧 暗号解読の可能性について >>
  • キーワードが設定されていません

  • 0P
脳内メーカーみたいなジェネレーター

どうしても思い浮かばないので質問させて頂きました。
言語はPHP5です。

文字列の数値化

ユーザーが入力した文字によって出力する数字を変えたいです。
しかし完全にランダムに出力するのではなく
この文字ならこの数値といった具合にしたいです。

例)
猫旅 ⇒ 80
あいう ⇒ 100
猫旅 ⇒ 80
あいう ⇒ 100

数値は0~100まででます。

といいますのも現在、自分のサイトに訪問して頂いた方に
戦闘力スカウターというコンテンツを提供しようと思っております。
一時期はやった脳内メーカーの様なものです。

わかりにくい説明で申し訳ないのですが
どのようにすれば実現できそうでしょうか・・・。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

Q脳内メーカーみたいなジェネレーター hayato0210  [02月09日 07時02分] 
┣Re:脳内メーカーみたいなジェネレーター shimix  [02月09日 08時55分] 
┗Re:脳内メーカーみたいなジェネレーター mgngmgng  [02月09日 10時07分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:脳内メーカーみたいなジェネレーター

単に0~100にするのでよければ、こんな感じでどうでしょう

  1. $str = '対象とする文字列';
  2. $weight = array(5002, 16981, 36781, 8691, 334257, 48531, 116); // 適当に重み付け
  3. $val = 0;
  4. $wct = 0;
  5. for ($i = 0; $i < strlen($str); $i++){
  6.   $val += ord(substr($str, $i, 1)) * $weight[$wct];
  7.   if (++$wct >= count($weight)) { $wct = 0; };
  8. }
  9. $score = $val % 101;

#101とおりの値になるけど、本当に0~100でいいのかな



(追記)
「重み付け」はあまり(というか全然)意味がないですね(汗

  1. $str = '対象とする文字列';
  2. $val = 0;
  3. for ($i = 0; $i < strlen($str); $i++){
  4.   $val += ord(substr($str, $i, 1)) * ($i + 1);
  5. }
  6. $score = $val % 101;

でじゅうぶんかも

Re:脳内メーカーみたいなジェネレーター

以前おなじようなのつくろうとした際は、
以下のような感じでPHP関数まかせで適当にでっちあげました。
ご参考まで。

  1. <?php
  2. function aaa($s){
  3.   mt_srand(crc32($s));   // crc32で適当にseedを与えて
  4.   return mt_rand(0,100)// 0~100の範囲の乱数を生成
  5. }
  6.  
  7. var_dump(
  8.   aaa('猫旅'),
  9.   aaa('あいう'),
  10.   aaa('猫旅'),
  11.   aaa('ほげ')
  12. );
SQLでイベント毎の参加人数を集計した... 質問一覧 暗号解読の可能性について