2017-02-13 4 views
0

私は知識が不足して解決できないという単純な問題があり、Web上で手がかりを見つけることができませんでした。数字のリストから値を生成

私はしたいと思います:

  • は番号(int型の配列)のリストから "値1" を生成します。
  • 乱数から「値2」を生成します。
  • 次に、「値2」と「値1」を比較して、数値のリスト内の乱数の有無を確認します。

数値のリストで乱数の配列検索を行うのではなく、これらの値を生成したいのはなぜですか?

数値のリストを隠し、値を比較するだけですばやくチェックできる必要があるためです。

私は "ハッシュ"メソッドについて考えましたが、intの配列をハッシュする方法はありません。

私はRSA暗号についても考えていて、数字のリストから「秘密鍵」を生成し、乱数から「秘密鍵」を生成します。しかし、私はそれを実装する方法を見つけることができませんでした。

私がしたいことをする方法があるかどうか知りたいですか?

ありがとうございました。


例:PHPで

サーバーは、数のリストを持っています。 (例:[10,20,24,6,98])

JS内のクライアントがサーバーに番号を送信します。 (例:8)を生成するためのその後

// [10, 20, 24, 6, 98] to hashed or key 
$computedIntArray = HashedOrRsaEncrypted($ServerIntArray); 

// 8 to hashed or key 
$computedClientNumber = HashedOrRsaEncrypted($ClientNumber); 

// return true if the clienthashedvalue is present in the serverIntArray 
$trueOrFalse = IsPresentInArray($computedClientNumber, $computedIntArray); 

答えて

0

、例えば10ない乱数の繰り返しは、ハッシュテーブルを使用することができます。 ES6で

var hash = {}, 
 
    l = 10, 
 
    r; 
 

 
while (l) { 
 
    r = Math.floor(Math.random() * 100); 
 
    if (!hash[r]) { 
 
     hash[r] = true; 
 
     l--; 
 
    } 
 
} 
 

 
console.log(Object.keys(hash).map(Number));
.as-console-wrapper { max-height: 100% !important; top: 0; }

、あなたはSetを使用して、セットのサイズが欲しかった数になるまで値を追加することができます。

var hash = new Set, 
 
    l = 10; 
 

 
while (hash.size < l) { 
 
    hash.add(Math.floor(Math.random() * 100)); 
 
} 
 

 
console.log([...hash]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

私はあなたが私の質問を誤解だと思います。それは乱数を生成することではなく、乱数(例えば、5)に対してハッシュやプライベートキー、または数値のリストから値を生成することです。次に、乱数が数字のリストに存在するかどうかを知るために、ハッシュまたはキー(プライベート/パブリック)または値を比較することができます。 – NoSkiiilL

+0

右は、数値がすでに使用されているかどうかをテストするために、オブジェクトをハッシュテーブルまたはセットとして使用できます。しかし、どこに問題がありますか? –

+0

投稿を編集して例を追加しました。私がやりたいことはおそらくできないと思い始めます。申し訳ありませんが自分自身を表現する別の方法を見つけることができない、英語は私の母国語ではありません。助けていただきありがとうございます。 – NoSkiiilL

関連する問題