Cas d'utilisation: Les images en direct sont fournies en temps réel et doivent être visualisées à l'écran. Pour abaisser la charge de la CPU, l'utilisateur doit être capable de supprimer les images et de ne montrer que 10%, ou 50%, des images.
Si l'utilisateur choisit 50%, alors toutes les autres images doivent être affichées (pas 50 images dans une rangée, puis jetez 50, comme cela serait trop de 50%.) p>
Le code actuel: p> montre l'image 100 % des temps. p> Si l'utilisateur fournit un entier, comme 1,2,3 .., ce qui signifie chacun, chaque seconde, chaque tiers et ainsi de suite, quelque chose de familier comme celui-ci pourrait être utilisé: < / p> Cependant, l'algorithme ci-dessus ne prend pas en charge montrant moins de 50% (la "2") des images, et donc la question est de savoir comment faire ça? < / p> Comme il s'agit d'une application en streaming en direct, il doit être rapide. p> De plus, le code ci-dessus est exécuté dans une fonction Callback em>, donc il y a aucune connaissance de quand il doit être exécuté. p> p>
3 Réponses :
Économisez la proportion donnée dans un "équilibre exécutant". Chaque fois qu'il atteint au moins 1,00, "encaisser" les économies d'une image.
Choisir 27% pour un exemple ... P>
show_count = 0.00 ratio = 0.27 while (we have more images to show) { show_count += ratio if (show_count >= 1.00) { show_image() show_count -= 1.00 }
Une image donnée est montrée, soit non montrée. S'il n'est pas montré, les chances de toute image future étant affichée devraient augmenter. Si elle est montrée, les chances de toute image future devraient descendre.
Donc, comptez jusqu'à 100. Si vous arrivez sur ou plus de 100, affichez la photo ... et soustrayez 100: P>
static counter(0); if (counter >= 100) { showImage(); counter -= 100; } counter += chance;
Essayé et cela semblait fonctionner parfaitement. Algorithme très intéressant!
Les autres réponses à cette question ne semblent tous à mettre en œuvre un compteur, alors je pensais que je suggérerais une approche probabiliste. Vous pouvez générer un nombre aléatoire entre zéro et une fois que votre fonction est appelée: puis, si le nombre aléatoire est inférieur au pourcentage prescrit d'images à afficher, affichez l'image. Sinon, jetez-le. P> P>
Avoir un uppot pour la pensée latérale. Je ne sais pas si le résultat est assez "systématique". Mais j'aime votre pensée hors de la boîte.
Merci @yunnosch. J'apprécie les commentaires et vous avez raison: cette réponse ne garantirait pas que toutes les autres images soient affichées dans l'exemple de cas d'utilisation 50/50.