Considérons un générateur dans Julia qui, s'il est collecté, prendra beaucoup de mémoire.
g=(x^2 for x=1:9999999999999999)
Je veux prendre un petit sous-échantillon aléatoire (Disons 1%), mais je ne veux pas collecter() l'objet car cela prendrait beaucoup de mémoire.
Jusqu'à présent, l'astuce que j'utilisais était la suivante
temp=collect((( rand()>0.01 ? nothing : x ) for x in g))
random_sample= temp[temp.!=nothing]
Mais ce n'est pas efficace pour les générateurs avec beaucoup d'éléments, collecter quelque chose avec autant d'éléments vides ne semble pas correct.
Toute idée est la bienvenue. Je suppose que l'astuce est de pouvoir obtenir des éléments aléatoires du générateur sans avoir à allouer de la mémoire pour l'ensemble.
Merci beaucoup.