2017-01-01 5 views
-2

私はオブジェクトの固定リスト(ほぼそれは実際にはDBから来ている)を持っていると私は一度に1つの要素を選択することができますし、前の要素のすべてのセットを行う前に見た それを行うにはどのようなアイデア?どのように前のものを知って次のランダムな要素を取得する

randint(0、N)を取得することに関連していますが、最後のピックを知っています。私は種を強制することはできますか?私はより明確にされている必要があります


EDIT

。そのために残念。 私のビュー/機能へのリクエストを行うときは、たびに1つの要素しか取得しません。

次回のリクエストでは、最後のものだけを引数として渡し、同じリストから別のものをランダムに取得したいと思います。しかし、Pythonがある種の線形合同ジェネレータ(u_1 = f(u_0))を使用しているので、次のものを取得するために古い値でシードすることができます。これは、最も簡単な方法は、単にオブジェクトのリストにrandom.shuffle()を使用し、そのリストを反復することであろうstatistaclly完璧である必要はなく、おおよそランダム

def f(old = None): 
    l = range(100) 
    some_number = ??(l, old) 
    return some_number 
+0

置き換えを行わずに選択したい場合は、選択した要素をセットから削除します。 – TigerhawkT3

+0

あなたの編集は意味をなさない。だから、基本的に1、2、1、2を選ぶことができます。 –

+0

私は編集で新しいリクエストを考慮しようとしましたが、私はあなたが今何をしているのかは分かりません。 – roganjosh

答えて

3

しません。

import random 

lst = [1, 2, 3, 4] 

random.shuffle(lst) 
print lst 

リスト自体を変更しない場合は、インデックスのリストを作成します。

import random 

indices = range(len(lst)) 

lst = [1, 2, 3, 4] 

random.shuffle(indices) 

for index in indices: 
    print lst[index] 

EDIT

今すぐ質問が変更されていることを、私はあなたがその目的のために少しさらに、この原理を取ることができると思います。利用可能なインデックスのリストを再構築するだけです。

def return_random(indices, last_chosen): 
    remaining_indices = [index for index in indices if index != last_chosen] 
    return random.choice(remaining_indices) 
0

これは

import random 
    def f(n): 
     random.seed(n) 
     return random.randint(0, 100) 

モデリングや統計分析のために良くないかもしれません動作するようです - それはランダムであり、それは以前の数に基づいています。

+0

Thx Alex、シンプルで必要なもの。私は統計的なプロパティは必要ありませんが、純粋な関数である – Dave

+1

残念なことにテストした後ではうまくいきません – Dave

+0

小さなシード番号でうまく動作しないようです。 random.shuffleに基づいた何かがうまくいくはずです。 –

関連する問題