次の条件で、サイズ 2 の整数のリストのリストを生成したいと考えています。
- 最初の要素は 2 番目の要素より小さく、
- すべてのデータは一意である必要があります。
カスタム関数を使用して各タプルを生成できますが、それを使用して 2 番目の条件を満たす方法がわかりません。
from hypothesis import strategies as st
@st.composite
def generate_data(draw):
min_val, max_val = draw(st.lists(st.integers(1, 1e2), min_size=2, max_size=2))
st.assume(min_val < max_val)
return [min_val, max_val]
generate_date
この (非効率的な?) 方法で数回繰り返すことにより、データを生成できます。
>>> [generate_data().example() for _ in range(3)]
[[5, 31], [1, 12], [33, 87]]
しかし、データが一意であることを確認するにはどうすればよいでしょうか?
たとえば、次の値は無効です。
[[1, 2], [1, 5], ...] # (1 is repeated)
[[1, 2], [1, 2], ...] # (repeated data)
ただし、次は有効です。
[[1, 2], [3, 4], ...]