# Revision history [back]

It's presently not entirely clear if you want new random values for each evaluation or if you want to establish random values first and then evaluate all polynomials at then (the latter can occur as part of the former, just with very low probability). Since evaluation establishes a ring homomorphism, you could construct one that does what you want. If you're going to use each homomorphism only once, it might be a bit of an overhead, but otherwise it's nice and concise:

sage: n=5
sage: v=3
sage: Rx=PolynomialRing(F,n,'x')
sage: Ry=PolynomialRing(F,n-v,'y')
sage: images = [F.random_element() for i in range(v)]+list(Ry.gens())
sage: phi=Rx.hom(images,Ry)
sage: L=[Rx.random_element() for j in  range(3)] # as an example
sage: [phi(f) for f in L]
[-2*y1^2 - y0 - y1, -y1^2 - 2*y1 + 2, y0^2 + y1^2]


It's presently not entirely clear if you want new random values for each evaluation or if you want to establish random values first and then evaluate all polynomials at then them (the latter can occur as part of the former, just with very low probability). Since evaluation establishes a ring homomorphism, you could construct one that does what you want. If you're going to use each homomorphism only once, it might be a bit of an overhead, but otherwise it's nice and concise:

sage: n=5
sage: v=3
sage: Rx=PolynomialRing(F,n,'x')
sage: Ry=PolynomialRing(F,n-v,'y')
sage: images = [F.random_element() for i in range(v)]+list(Ry.gens())
sage: phi=Rx.hom(images,Ry)
sage: L=[Rx.random_element() for j in  range(3)] # as an example
sage: [phi(f) for f in L]
[-2*y1^2 - y0 - y1, -y1^2 - 2*y1 + 2, y0^2 + y1^2]