2017-10-01 1 views
0

Exemple: J'ai de fonction Y et la fonction X.Comment puis-je créer des opérations aléatoires avec 2 fonctions?

Je veux l'Octave faire Y (opérateur aléatoire) X

puis encore et encore, mais avec des opérateurs aléatoires, et d'enregistrer les résultats comme il qui se passe. C'est possible?

Mon essayer:

A = [ '*', '+', '-'; '/'];

for i:(1:10) 
op1 = A (randi([1 4]),1); 
op2 = A (randi([1 4]),1); 
op3 = A (randi([1 4]),1); 
op4 = A (randi([1 4]),1); 
op5 = A (randi([1 4]),1); 
op6 = A (randi([1 4]),1); 
result = 1 op1 4 op2 25 op3 2 op4 23 op5 6 op6 2 
end; 
+0

La seule façon il semble possible est avec l'amer' eval' ou eval enrobées de sucre ('str2num') –

+0

comment serait-il? –

+1

Si vous avez besoin de les utiliser, il vous indique que vous devez changer votre approche –

Répondre

2

Une solution ne comportant pas l'utilisation de eval et str2func pourrait être l'utilisation d'un tableau de anonynous functions.

% Define the input values 
v1=25 
v2=5 
% Define the array of anonymous functions, one for each operator 
f={@(x,y) (x+y); 
    @(x,y) (x-y); 
    @(x,y) (x*y); 
    @(x,y) (x/y)} 
% Randomly call one of the anonymous functions 
for i=1:10 
    r=randi([1,4],1,1) 
    result(i)=f{r}(v1,v2) 
end 

Hope this helps,

Qapla »

+2

Au lieu de cela, vous pouvez définir 'f' comme' f = {@ plus, @ moins, @ fois, @ rdivide}; ' – rahnema1

+0

Applicable seulement s'il y a deux nombres et un opérateur à la fois. –